<?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>209774</bug_id>
          
          <creation_ts>2020-03-30 14:39:49 -0700</creation_ts>
          <short_desc>[ECMA-402] Implement unified Intl.NumberFormat</short_desc>
          <delta_ts>2021-06-03 10:09:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Carr">sffc</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>andy</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>feliziani.emanuele</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>magross</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>sffc</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635739</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:39:49 -0700</bug_when>
    <thetext>Unified Intl.NumberFormat, the proposal which adds compact notation, measurement units, and a handful of other options to Intl.NumberFormat, has reached Stage 4 in TC39 as of February 2020, and the other major browser engines (V8 and SpiderMonkey) have been shipping it for some time.

As usage of these features of Intl.NumberFormat increases throughout the ecosystem, WebKit users will be left behind with legacy polyfills, leading to poorer performance relative to other browsers.  At Google, we are currently weighing our options for calling these features of Intl.NumberFormat in supported environments in order to give users better performance and smaller download sizes.

ICU4C exposes C and C++ APIs that can be used to implement Unified Intl.NumberFormat.  Implementing Unified Intl.NumberFormat is largely a matter of adding the glue between JavaScript and ICU4C, as WebKit already does for other Intl types.

Original proposal repo: https://github.com/tc39/proposal-unified-intl-numberformat</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635831</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 16:39:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/61079763&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665967</commentid>
    <comment_count>2</comment_count>
      <attachid>402712</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-24 19:49:42 -0700</bug_when>
    <thetext>Created attachment 402712
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666093</commentid>
    <comment_count>3</comment_count>
      <attachid>402749</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 11:04:17 -0700</bug_when>
    <thetext>Created attachment 402749
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666353</commentid>
    <comment_count>4</comment_count>
      <attachid>402843</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 19:32:28 -0700</bug_when>
    <thetext>Created attachment 402843
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666386</commentid>
    <comment_count>5</comment_count>
      <attachid>402853</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 22:22:09 -0700</bug_when>
    <thetext>Created attachment 402853
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666387</commentid>
    <comment_count>6</comment_count>
      <attachid>402843</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-25 22:55:38 -0700</bug_when>
    <thetext>Comment on attachment 402843
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:188
&gt; +static Optional&lt;MeasureUnit&gt; isSanctionedSimpleUnitIdentifier(StringView unitIdentifier)

I think you should drop the `is` since this isn&apos;t bool-typed like the spec operation.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:264
&gt; +static Optional&lt;WellFormedUnit&gt; isWellFormedUnitIdentifier(StringView unitIdentifier)

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:524
&gt; +        skeletonBuilder.append(numeratorUnit.type());
&gt; +        skeletonBuilder.append(&apos;-&apos;);
&gt; +        skeletonBuilder.append(numeratorUnit.subType());

I think you can use the variadic overload here?
  skeletonBuilder.append(numeratorUnit.type(), &apos;-&apos;, numeratorUnit.subType());

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:530
&gt; +            skeletonBuilder.append(denominatorUnit.type());
&gt; +            skeletonBuilder.append(&apos;-&apos;);
&gt; +            skeletonBuilder.append(denominatorUnit.subType());

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:47
&gt; +enum class IntlNotation { Standard, Scientific, Engineering, Compact };

Looks like you forgot `: uint8_t` here.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:84
&gt; +    friend void setNumberFormatDigitOptions(JSGlobalObject*, IntlType*, JSObject*, unsigned, unsigned, IntlNotation);

We should probably label the unsigneds, since there are two.

&gt; Source/JavaScriptCore/runtime/IntlPluralRules.h:57
&gt; +    friend void setNumberFormatDigitOptions(JSGlobalObject*, IntlType*, JSObject*, unsigned, unsigned, IntlNotation);

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:35
&gt; +void setNumberFormatDigitOptions(JSGlobalObject* globalObject, IntlType* intlObject, JSObject* options, unsigned minimumFractionDigitsDefault, unsigned maximumFractionDigitsDefault, IntlNotation notation)

Maybe `intlInstance` would be better than `intlObject`, just so we don&apos;t get it confused with *the* IntlObject.

&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:112
&gt; +unsigned majorVersion();

FYI: We could have $vm.icuVersion depend on this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666388</commentid>
    <comment_count>7</comment_count>
      <attachid>402843</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 23:18:06 -0700</bug_when>
    <thetext>Comment on attachment 402843
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:188
&gt;&gt; +static Optional&lt;MeasureUnit&gt; isSanctionedSimpleUnitIdentifier(StringView unitIdentifier)
&gt; 
&gt; I think you should drop the `is` since this isn&apos;t bool-typed like the spec operation.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:264
&gt;&gt; +static Optional&lt;WellFormedUnit&gt; isWellFormedUnitIdentifier(StringView unitIdentifier)
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:524
&gt;&gt; +        skeletonBuilder.append(numeratorUnit.subType());
&gt; 
&gt; I think you can use the variadic overload here?
&gt;   skeletonBuilder.append(numeratorUnit.type(), &apos;-&apos;, numeratorUnit.subType());

Nice! Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:530
&gt;&gt; +            skeletonBuilder.append(denominatorUnit.subType());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:47
&gt;&gt; +enum class IntlNotation { Standard, Scientific, Engineering, Compact };
&gt; 
&gt; Looks like you forgot `: uint8_t` here.

Oops! Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:84
&gt;&gt; +    friend void setNumberFormatDigitOptions(JSGlobalObject*, IntlType*, JSObject*, unsigned, unsigned, IntlNotation);
&gt; 
&gt; We should probably label the unsigneds, since there are two.

Nice, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:35
&gt;&gt; +void setNumberFormatDigitOptions(JSGlobalObject* globalObject, IntlType* intlObject, JSObject* options, unsigned minimumFractionDigitsDefault, unsigned maximumFractionDigitsDefault, IntlNotation notation)
&gt; 
&gt; Maybe `intlInstance` would be better than `intlObject`, just so we don&apos;t get it confused with *the* IntlObject.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlPluralRules.h:57
&gt;&gt; +    friend void setNumberFormatDigitOptions(JSGlobalObject*, IntlType*, JSObject*, unsigned, unsigned, IntlNotation);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:112
&gt;&gt; +unsigned majorVersion();
&gt; 
&gt; FYI: We could have $vm.icuVersion depend on this too.

Sounds nice! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666389</commentid>
    <comment_count>8</comment_count>
      <attachid>402854</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 23:20:50 -0700</bug_when>
    <thetext>Created attachment 402854
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666572</commentid>
    <comment_count>9</comment_count>
      <attachid>402895</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-26 13:15:44 -0700</bug_when>
    <thetext>Created attachment 402895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666737</commentid>
    <comment_count>10</comment_count>
      <attachid>402944</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-26 22:28:22 -0700</bug_when>
    <thetext>Created attachment 402944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666740</commentid>
    <comment_count>11</comment_count>
      <attachid>402945</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 00:19:16 -0700</bug_when>
    <thetext>Created attachment 402945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666741</commentid>
    <comment_count>12</comment_count>
      <attachid>402946</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 00:31:47 -0700</bug_when>
    <thetext>Created attachment 402946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666742</commentid>
    <comment_count>13</comment_count>
      <attachid>402947</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 00:34:44 -0700</bug_when>
    <thetext>Created attachment 402947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666743</commentid>
    <comment_count>14</comment_count>
      <attachid>402948</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 00:46:43 -0700</bug_when>
    <thetext>Created attachment 402948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666745</commentid>
    <comment_count>15</comment_count>
      <attachid>402950</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 01:08:55 -0700</bug_when>
    <thetext>Created attachment 402950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666752</commentid>
    <comment_count>16</comment_count>
      <attachid>402953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-27 07:23:12 -0700</bug_when>
    <thetext>Created attachment 402953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666817</commentid>
    <comment_count>17</comment_count>
      <attachid>402953</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-27 15:25:16 -0700</bug_when>
    <thetext>Comment on attachment 402953
Patch

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

r=me, this is awesome.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:223
&gt; +    if (iterator != std::end(simpleUnits)) {
&gt; +        if (!WTF::codePointCompare(iterator-&gt;subType().characters(), iterator-&gt;subType().length(), unitIdentifier.characters8(), unitIdentifier.length()))

&amp;&amp; perhaps?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:317
&gt; -        throwTypeError(globalObject, scope, &quot;failed to initialize NumberFormat due to invalid locale&quot;_s);
&gt; +        throwTypeError(globalObject, scope, &quot;Failed to initialize NumberFormat due to invalid locale&quot;_s);

Hmm, it seems like most Intl error messages start with a lowercase letter -- wonder if we should address them en masse in a separate patch?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:397
&gt; +    } else {
&gt; +        if (m_style == Style::Unit) {

Seems like we should just make it `else if`.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:640
&gt; +        case CurrencyDisplay::NarrowSymbol:
&gt; +            throwTypeError(globalObject, scope, &quot;Failed to initialize NumberFormat&quot;_s);
&gt; +            return;

Hmm. I don&apos;t object to these messages because &quot;not supported in the ICU version you&apos;re using&quot; isn&apos;t appropriate to show to the user, but I wonder if we should differentiate them from the U_FAILURE cases somehow.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:726
&gt; +    status = U_ZERO_ERROR;

I think you can delete this line?
(U_FAILURE is a `&gt; U_ZERO_ERROR` check.)

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:761
&gt; +    status = U_ZERO_ERROR;

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:1042
&gt; +    status = U_ZERO_ERROR;

Ditto x3 in this section.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:90
&gt; +class IntlFieldIterator {

Fancy!

&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:112
&gt; +struct ICUDeleter {

What a good idea. :D

&gt; JSTests/stress/intl-numberformat-unified.js:38
&gt; +    shouldBe((-100).toLocaleString(&quot;bn&quot;, {

Do you think we should have some more tests for non-English locales (at least, ones which have more predictable behavior)?

&gt; JSTests/test262/expectations.yaml:1707
&gt; +test/intl402/NumberFormat/prototype/format/engineering-scientific-de-DE.js:

These all require ICU &gt;64, I take it? :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666909</commentid>
    <comment_count>18</comment_count>
      <attachid>402953</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-28 13:39:54 -0700</bug_when>
    <thetext>Comment on attachment 402953
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:153
&gt; +class MeasureUnit {

Seems like this should be a struct rather than a class, without a constructor or getter functions.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:217
&gt; +        [] (const MeasureUnit&amp; unit, const StringView&amp; unitIdentifier) {

Should be StringView, not const StringView&amp;; I believe it’s more efficient!

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:220
&gt; +            if (unitIdentifier.is8Bit())
&gt; +                return WTF::codePointCompare(unit.subType().characters(), unit.subType().length(), unitIdentifier.characters8(), unitIdentifier.length()) &lt; 0;
&gt; +            return WTF::codePointCompare(unit.subType().characters(), unit.subType().length(), unitIdentifier.characters16(), unitIdentifier.length()) &lt; 0;

Seems like a codePointCompare function that takes two StringView would make this code way easier to read.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:229
&gt; +class WellFormedUnit {

Seems like this would be better as a struct, rather than a class.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:256
&gt; +    auto per = StringView(&quot;-per-&quot;_s);

Putting the ASCIILiteral into a StringView prevents some kinds of optimizations, I think. Too bad we need to do it.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:257
&gt; +    auto pos = unitIdentifier.find(per);

The name &quot;pos&quot; isn’t following WebKit coding style. We normally use words.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:262
&gt; +    auto pos2 = unitIdentifier.find(per, pos + per.length());
&gt; +    if (pos2 != WTF::notFound)
&gt; +        return WTF::nullopt;

No need to name &quot;pos2&quot; with a local variable. Maybe could use contains?

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:726
&gt;&gt; +    status = U_ZERO_ERROR;
&gt; 
&gt; I think you can delete this line?
&gt; (U_FAILURE is a `&gt; U_ZERO_ERROR` check.)

I am not sure that’s right. Warnings are negative numbers, which are &quot;&lt; U_ZERO_ERROR&quot;. Not &quot;== U_ZERO_ERROR&quot;.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:38
&gt; +#if !defined(HAVE_ICU_U_NUMBER_FORMATTER)
&gt; +// UNUM_COMPACT_FIELD and UNUM_MEASURE_UNIT_FIELD are available after ICU 64.
&gt; +#if U_ICU_VERSION_MAJOR_NUM &gt;= 64
&gt; +#define HAVE_ICU_U_NUMBER_FORMATTER 1
&gt; +#endif
&gt; +#endif

Can we put this into PlatformHave.h instead of here?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:35
&gt; +void setNumberFormatDigitOptions(JSGlobalObject* globalObject, IntlType* intlInstance, JSObject* options, unsigned minimumFractionDigitsDefault, unsigned maximumFractionDigitsDefault, IntlNotation notation)

I suggest references for the two pointer arguments, but when in JavaScriptCore I am often overruled on this.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:94
&gt; +    explicit IntlFieldIterator(UFieldPositionIterator* iterator)

Using a reference would have 3 benefits:

1) Helps make clear we can’t call next if it’s null.
2) Makes the class non copyable without requiring the use of WTF_MAKE_NONCOPYABLE.
3) Obviates need for &quot;.get()&quot; at the call site.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:101
&gt; +    int32_t next(int32_t&amp; beginIndex, int32_t&amp; endIndex, UErrorCode&amp; status)
&gt; +    {
&gt; +        UNUSED_PARAM(status);

Might prefer the &quot;unnamed argument&quot; pattern to UNUSED_PARAM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666914</commentid>
    <comment_count>19</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-28 13:56:03 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:726
&gt; &gt;&gt; +    status = U_ZERO_ERROR;
&gt; &gt; 
&gt; &gt; I think you can delete this line?
&gt; &gt; (U_FAILURE is a `&gt; U_ZERO_ERROR` check.)
&gt; 
&gt; I am not sure that’s right. Warnings are negative numbers, which are &quot;&lt;
&gt; U_ZERO_ERROR&quot;. Not &quot;== U_ZERO_ERROR&quot;.

That is a good point, though I think even internally the early outs always check for U_FAILURE, such that warnings remain purely informative. Resetting may be more correct but I&apos;m not certain that it buys us anything unless we do end up checking for a warning (which for us probably just means &quot;unless we&apos;re using needsToGrowToProduceCString&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667000</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 01:02:48 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #19)
&gt; (In reply to Darin Adler from comment #18)
&gt; &gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:726
&gt; &gt; &gt;&gt; +    status = U_ZERO_ERROR;
&gt; &gt; &gt; 
&gt; &gt; &gt; I think you can delete this line?
&gt; &gt; &gt; (U_FAILURE is a `&gt; U_ZERO_ERROR` check.)
&gt; &gt; 
&gt; &gt; I am not sure that’s right. Warnings are negative numbers, which are &quot;&lt;
&gt; &gt; U_ZERO_ERROR&quot;. Not &quot;== U_ZERO_ERROR&quot;.
&gt; 
&gt; That is a good point, though I think even internally the early outs always
&gt; check for U_FAILURE, such that warnings remain purely informative. Resetting
&gt; may be more correct but I&apos;m not certain that it buys us anything unless we
&gt; do end up checking for a warning (which for us probably just means &quot;unless
&gt; we&apos;re using needsToGrowToProduceCString&quot;).

OK, I checked ICU documents. And the sample code in ICU document always use &quot;first initialize it with U_ZERO_ERROR, and continue using it without re-initialize it&quot; manner. So, it seems initializing it only once is the intended use by ICU :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667004</commentid>
    <comment_count>21</comment_count>
      <attachid>402953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 01:08:29 -0700</bug_when>
    <thetext>Comment on attachment 402953
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:153
&gt;&gt; +class MeasureUnit {
&gt; 
&gt; Seems like this should be a struct rather than a class, without a constructor or getter functions.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:217
&gt;&gt; +        [] (const MeasureUnit&amp; unit, const StringView&amp; unitIdentifier) {
&gt; 
&gt; Should be StringView, not const StringView&amp;; I believe it’s more efficient!

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:220
&gt;&gt; +            return WTF::codePointCompare(unit.subType().characters(), unit.subType().length(), unitIdentifier.characters16(), unitIdentifier.length()) &lt; 0;
&gt; 
&gt; Seems like a codePointCompare function that takes two StringView would make this code way easier to read.

Nice, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:223
&gt;&gt; +        if (!WTF::codePointCompare(iterator-&gt;subType().characters(), iterator-&gt;subType().length(), unitIdentifier.characters8(), unitIdentifier.length()))
&gt; 
&gt; &amp;&amp; perhaps?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:229
&gt;&gt; +class WellFormedUnit {
&gt; 
&gt; Seems like this would be better as a struct, rather than a class.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:256
&gt;&gt; +    auto per = StringView(&quot;-per-&quot;_s);
&gt; 
&gt; Putting the ASCIILiteral into a StringView prevents some kinds of optimizations, I think. Too bad we need to do it.

Yeah...

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:257
&gt;&gt; +    auto pos = unitIdentifier.find(per);
&gt; 
&gt; The name &quot;pos&quot; isn’t following WebKit coding style. We normally use words.

Fixed, renamed to &quot;position&quot;.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:262
&gt;&gt; +        return WTF::nullopt;
&gt; 
&gt; No need to name &quot;pos2&quot; with a local variable. Maybe could use contains?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:317
&gt;&gt; +        throwTypeError(globalObject, scope, &quot;Failed to initialize NumberFormat due to invalid locale&quot;_s);
&gt; 
&gt; Hmm, it seems like most Intl error messages start with a lowercase letter -- wonder if we should address them en masse in a separate patch?

OK, changed :)

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:397
&gt;&gt; +        if (m_style == Style::Unit) {
&gt; 
&gt; Seems like we should just make it `else if`.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:640
&gt;&gt; +            return;
&gt; 
&gt; Hmm. I don&apos;t object to these messages because &quot;not supported in the ICU version you&apos;re using&quot; isn&apos;t appropriate to show to the user, but I wonder if we should differentiate them from the U_FAILURE cases somehow.

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:726
&gt;&gt;&gt; +    status = U_ZERO_ERROR;
&gt;&gt; 
&gt;&gt; I think you can delete this line?
&gt;&gt; (U_FAILURE is a `&gt; U_ZERO_ERROR` check.)
&gt; 
&gt; I am not sure that’s right. Warnings are negative numbers, which are &quot;&lt; U_ZERO_ERROR&quot;. Not &quot;== U_ZERO_ERROR&quot;.

I&apos;ve checked ICU document, and it seems that this re-initialization is not necessary. Removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:761
&gt;&gt; +    status = U_ZERO_ERROR;
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:1042
&gt;&gt; +    status = U_ZERO_ERROR;
&gt; 
&gt; Ditto x3 in this section.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:38
&gt;&gt; +#endif
&gt; 
&gt; Can we put this into PlatformHave.h instead of here?

Unfortunately, this check requires U_ICU_VERSION_MAJOR_NUM which is defined in ICU headers. And Platform.h etc. assumes that this only contains macros (it should not include any C forward declarations) since it is also used by sandbox preprocessors.
So, we cannot include ICU headers in PlatformHave.h. I leave this here for now.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:35
&gt;&gt; +void setNumberFormatDigitOptions(JSGlobalObject* globalObject, IntlType* intlInstance, JSObject* options, unsigned minimumFractionDigitsDefault, unsigned maximumFractionDigitsDefault, IntlNotation notation)
&gt; 
&gt; I suggest references for the two pointer arguments, but when in JavaScriptCore I am often overruled on this.

Since these pointers are JS objects, for now, I follow the JSC&apos;s convention: using pointers for JS cells.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:90
&gt;&gt; +class IntlFieldIterator {
&gt; 
&gt; Fancy!

:)

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:94
&gt;&gt; +    explicit IntlFieldIterator(UFieldPositionIterator* iterator)
&gt; 
&gt; Using a reference would have 3 benefits:
&gt; 
&gt; 1) Helps make clear we can’t call next if it’s null.
&gt; 2) Makes the class non copyable without requiring the use of WTF_MAKE_NONCOPYABLE.
&gt; 3) Obviates need for &quot;.get()&quot; at the call site.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:101
&gt;&gt; +        UNUSED_PARAM(status);
&gt; 
&gt; Might prefer the &quot;unnamed argument&quot; pattern to UNUSED_PARAM.

Fixed.

&gt;&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:112
&gt;&gt; +struct ICUDeleter {
&gt; 
&gt; What a good idea. :D

This `template&lt;auto&gt;` is C++17&apos;s new fancy feature :)

&gt;&gt; JSTests/stress/intl-numberformat-unified.js:38
&gt;&gt; +    shouldBe((-100).toLocaleString(&quot;bn&quot;, {
&gt; 
&gt; Do you think we should have some more tests for non-English locales (at least, ones which have more predictable behavior)?

Added ja-JP pattern.

&gt;&gt; JSTests/test262/expectations.yaml:1707
&gt;&gt; +test/intl402/NumberFormat/prototype/format/engineering-scientific-de-DE.js:
&gt; 
&gt; These all require ICU &gt;64, I take it? :(

They are failing because ICU returns *slightly* different pattern text :(
It passes with very new ICU like ICU 68. I&apos;ve ensured that all of them pass with ICU 68.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667005</commentid>
    <comment_count>22</comment_count>
      <attachid>403033</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 01:13:01 -0700</bug_when>
    <thetext>Created attachment 403033
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667007</commentid>
    <comment_count>23</comment_count>
      <attachid>403035</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 01:21:45 -0700</bug_when>
    <thetext>Created attachment 403035
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667082</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 07:29:47 -0700</bug_when>
    <thetext>Failed ios-wk2 tests are completely unrelated to Intl.

media/now-playing-status-without-media.html
webanimations/accelerated-animation-with-easing.html
imported/w3c/web-platform-tests/cors/credentials-flag.htm
imported/w3c/web-platform-tests/cors/origin.htm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667147</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 09:37:52 -0700</bug_when>
    <thetext>I&apos;ll first land non-Intl part (StringView / ICUDeleter) to unlock further implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667170</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 10:23:41 -0700</bug_when>
    <thetext>Committed r263665: &lt;https://trac.webkit.org/changeset/263665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667171</commentid>
    <comment_count>27</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 10:24:01 -0700</bug_when>
    <thetext>I&apos;ve just landed WTF part only. Remaining part will be landed later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667173</commentid>
    <comment_count>28</comment_count>
      <attachid>403079</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 10:27:54 -0700</bug_when>
    <thetext>Created attachment 403079
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675070</commentid>
    <comment_count>29</comment_count>
      <attachid>403079</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-26 00:38:37 -0700</bug_when>
    <thetext>Comment on attachment 403079
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:213
&gt; +// Create MeasureUnit like ICU4J.
&gt; +struct MeasureUnit {
&gt; +    ASCIILiteral type;
&gt; +    ASCIILiteral subType;
&gt; +};
&gt; +
&gt; +static Optional&lt;MeasureUnit&gt; sanctionedSimpleUnitIdentifier(StringView unitIdentifier)
&gt; +{
&gt; +    static constexpr MeasureUnit simpleUnits[] = {
&gt; +        { &quot;area&quot;_s, &quot;acre&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;bit&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;byte&quot;_s },
&gt; +        { &quot;temperature&quot;_s, &quot;celsius&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;centimeter&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;day&quot;_s },
&gt; +        { &quot;angle&quot;_s, &quot;degree&quot;_s },
&gt; +        { &quot;temperature&quot;_s, &quot;fahrenheit&quot;_s },
&gt; +        { &quot;volume&quot;_s, &quot;fluid-ounce&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;foot&quot;_s },
&gt; +        { &quot;volume&quot;_s, &quot;gallon&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;gigabit&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;gigabyte&quot;_s },
&gt; +        { &quot;mass&quot;_s, &quot;gram&quot;_s },
&gt; +        { &quot;area&quot;_s, &quot;hectare&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;hour&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;inch&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;kilobit&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;kilobyte&quot;_s },
&gt; +        { &quot;mass&quot;_s, &quot;kilogram&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;kilometer&quot;_s },
&gt; +        { &quot;volume&quot;_s, &quot;liter&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;megabit&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;megabyte&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;meter&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;mile&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;mile-scandinavian&quot;_s },
&gt; +        { &quot;volume&quot;_s, &quot;milliliter&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;millimeter&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;millisecond&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;minute&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;month&quot;_s },
&gt; +        { &quot;mass&quot;_s, &quot;ounce&quot;_s },
&gt; +        { &quot;concentr&quot;_s, &quot;percent&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;petabyte&quot;_s },
&gt; +        { &quot;mass&quot;_s, &quot;pound&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;second&quot;_s },
&gt; +        { &quot;mass&quot;_s, &quot;stone&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;terabit&quot;_s },
&gt; +        { &quot;digital&quot;_s, &quot;terabyte&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;week&quot;_s },
&gt; +        { &quot;length&quot;_s, &quot;yard&quot;_s },
&gt; +        { &quot;duration&quot;_s, &quot;year&quot;_s },
&gt; +    };
&gt; +
&gt; +    auto iterator = std::lower_bound(std::begin(simpleUnits), std::end(simpleUnits), unitIdentifier,
&gt; +        [] (const MeasureUnit&amp; unit, StringView unitIdentifier) {
&gt; +            return WTF::codePointCompare(StringView(unit.subType), unitIdentifier) &lt; 0;
&gt; +        });
&gt; +    if (iterator != std::end(simpleUnits) &amp;&amp; !WTF::codePointCompare(StringView(iterator-&gt;subType), unitIdentifier))
&gt; +        return *iterator;
&gt; +    return WTF::nullopt;
&gt; +}

Let&apos;s land this part to unlock further prototyping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675071</commentid>
    <comment_count>30</comment_count>
      <attachid>403079</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-26 00:39:31 -0700</bug_when>
    <thetext>Comment on attachment 403079
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:213
&gt;&gt; +}
&gt; 
&gt; Let&apos;s land this part to unlock further prototyping.

Or, for now, I&apos;ll just copy &amp; paste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675094</commentid>
    <comment_count>31</comment_count>
      <attachid>403079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-26 09:12:27 -0700</bug_when>
    <thetext>Comment on attachment 403079
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:209
&gt; +    auto iterator = std::lower_bound(std::begin(simpleUnits), std::end(simpleUnits), unitIdentifier,
&gt; +        [] (const MeasureUnit&amp; unit, StringView unitIdentifier) {
&gt; +            return WTF::codePointCompare(StringView(unit.subType), unitIdentifier) &lt; 0;
&gt; +        });

I’d like to see a std::is_sorted assertion. If we can’t check it is properly sorted at compile time, at least we should check it at runtime.

Seems like we might also want to consider overloading codePointCompare so it can handle the mix of ASCIILiteral and StringView without an explicit cast. There may even be some value in optimizing that case the way we optimize== for such combinations. Although right now it looks like we only optimize == with const char*, not ASCIILiteral.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:210
&gt; +    if (iterator != std::end(simpleUnits) &amp;&amp; !WTF::codePointCompare(StringView(iterator-&gt;subType), unitIdentifier))

This can use == instead of &quot;!codePointCompare&quot;. The named function is only needed for sorting, which is ambiguous enough that we didn’t want a code-point based comparison ignoring linguistic rules to be implied. We don&apos;t treat equality as ambiguous, though, so == can be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679909</commentid>
    <comment_count>32</comment_count>
      <attachid>406493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-12 20:45:55 -0700</bug_when>
    <thetext>Created attachment 406493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682143</commentid>
    <comment_count>33</comment_count>
      <attachid>403079</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-22 11:07:07 -0700</bug_when>
    <thetext>Comment on attachment 403079
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:209
&gt;&gt; +        });
&gt; 
&gt; I’d like to see a std::is_sorted assertion. If we can’t check it is properly sorted at compile time, at least we should check it at runtime.
&gt; 
&gt; Seems like we might also want to consider overloading codePointCompare so it can handle the mix of ASCIILiteral and StringView without an explicit cast. There may even be some value in optimizing that case the way we optimize== for such combinations. Although right now it looks like we only optimize == with const char*, not ASCIILiteral.

Added.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:210
&gt;&gt; +    if (iterator != std::end(simpleUnits) &amp;&amp; !WTF::codePointCompare(StringView(iterator-&gt;subType), unitIdentifier))
&gt; 
&gt; This can use == instead of &quot;!codePointCompare&quot;. The named function is only needed for sorting, which is ambiguous enough that we didn’t want a code-point based comparison ignoring linguistic rules to be implied. We don&apos;t treat equality as ambiguous, though, so == can be used.

Changed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682148</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-22 11:32:31 -0700</bug_when>
    <thetext>Committed r266031: &lt;https://trac.webkit.org/changeset/266031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682179</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-22 15:14:49 -0700</bug_when>
    <thetext>Catalina JSC bot is failing while EWS is green.
It looks like Catalina Safari is built against older SDK which includes old ICU header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682183</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-22 15:34:48 -0700</bug_when>
    <thetext>Committed r266037: &lt;https://trac.webkit.org/changeset/266037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682222</commentid>
    <comment_count>37</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-23 00:11:56 -0700</bug_when>
    <thetext>Committed r266044: &lt;https://trac.webkit.org/changeset/266044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766427</commentid>
    <comment_count>38</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-03 10:09:09 -0700</bug_when>
    <thetext>*** Bug 226297 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402712</attachid>
            <date>2020-06-24 19:49:42 -0700</date>
            <delta_ts>2020-06-25 11:04:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-209774-20200624194941.patch</filename>
            <type>text/plain</type>
            <size>38916</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MWJkZWFiYzAzY2U3ZWE2YWI3OTJlYTU4YmFhZjk4ODFhNDNmZDA3Li5lZDQzODJjOThjODY0OGRh
YWE1Y2ZjYWMxYTE0Y2U3ZDg4M2MyODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0wNi0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVDdXJy
ZW5jeURpZ2l0cyk6CisgICAgICAgIChKU0M6OmlzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKToKKyAgICAgICAgKEpTQzo6aXNXZWxsRm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0
aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChK
U0M6OkludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5oOgorCiAyMDIwLTA2LTI0ICBDYWl0bGluIFBvdHRlciAg
PGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gaGFuZGxlIFB1dC9EZWZpbmVQcml2
YXRlRmllbGQgaW4gcmVzZXRQdXRCeUlECmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRkNWYzY2VhNzM3ZjA2ZDUzNTE1Yzk4M2Jk
YzE1Y2RjMmRlYWY4M2MuLjM1NTAxM2ZhZDgwZTJkMDA5ZWMyYWI5ZTAxZDI5YjU3ZTIxMDZiOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIFVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQgbWlzc2luZyBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd3RmL3RleHQvQVNDSUlMaXRlcmFsLmg6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KToK
KwogMjAyMC0wNi0yNCAgVW1hciBJcWJhbCAgPHVpcWJhbEBhcHBsZS5jb20+CiAKICAgICAgICAg
V2Ugc2hvdWxkIHJlc3VycmVjdCB0aGUgb2xkZXIgcGF0Y2ggdGhhdCBjb2xsZWN0cyBzb21lIHN0
YXRpc3RpY3Mgb2Ygd2ViIEFQSSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4YzIyODBkYTUwODQzYTYzYmRkLi4wYjVkYjVjMjk5ZGJm
M2YxNTgzNzUyODBhYTNlMGFjY2YxYTM5N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTc4OSw2ICsxNzg5LDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNj
cmlwdEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1l
dGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2
RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2
RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQ
YXJhbXMuaCAqLzsgfTsKKwkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMu
aCAqLzsgfTsKIAkJRTMyNTk1NjQyMUZEQTJDOTAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLzsg
fTsKIAkJRTMyNUEzNjAyMjIxMTU5MDAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVBMzVG
MjIyMTE1OEEwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi87IH07CiAJCUUz
MjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEg
LyogWWFyckVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00OTQ0LDYgKzQ5NDUsNyBAQAogCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3
MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTbmlwcGV0UGFyYW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRM
U25pcHBldFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExTbmlwcGV0UGFyYW1zLmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZU
TFNuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25p
cHBldFBhcmFtcy5oOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAv
KiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNzIsNiArNzI3NCw3IEBACiAJCQkJQTFENzky
RjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLywKIAkJCQlBMUQ3OTJG
ODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywK
IAkJCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmggKi8sCisJCQkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmggKi8sCiAJCQkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8sCiAJCQkJQTEyQkJGRjMxQjA0NEE5ODAw
NjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovLApAQCAtOTc1NSw2ICs5NzU4LDcgQEAKIAkJCQlB
MUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
MjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cAppbmRleCBjMzhmZTk5ZTJmNGYwYTNkYjJmM2FiMTc5OTIyZWJhODM4YWEyOTM4Li4xYTFhNDhm
MDk0ZGM3YmI2YjgyYzdjMWRkZDQzMjM5NDI4ODQ3NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpAQCAtMTE5LDcgKzEyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdp
dHMoY29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKICAgICAvLyAxMS4xLjEgVGhlIGFic3RyYWN0IG9w
ZXJhdGlvbiBDdXJyZW5jeURpZ2l0cyAoY3VycmVuY3kpCiAgICAgLy8gIklmIHRoZSBJU08gNDIx
NyBjdXJyZW5jeSBhbmQgZnVuZHMgY29kZSBsaXN0IGNvbnRhaW5zIGN1cnJlbmN5IGFzIGFuIGFs
cGhhYmV0aWMgY29kZSwKICAgICAvLyB0aGVuIHJldHVybiB0aGUgbWlub3IgdW5pdCB2YWx1ZSBj
b3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW5jeSBmcm9tIHRoZSBsaXN0OyBlbHNlIHJldHVybiAy
LgotICAgIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlub3JVbml0
c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPGNvbnN0IGNoYXIqLCB1bnNp
Z25lZD4gY3VycmVuY3lNaW5vclVuaXRzW10gPSB7CiAgICAgICAgIHsgIkJIRCIsIDMgfSwKICAg
ICAgICAgeyAiQklGIiwgMCB9LAogICAgICAgICB7ICJCWVIiLCAwIH0sCkBAIC0xNTMsNiArMTU0
LDg5IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY29uc3QgU3RyaW5n
JiBjdXJyZW5jeSkKICAgICByZXR1cm4gMjsKIH0KIAorc3RhdGljIGJvb2wgaXNTYW5jdGlvbmVk
U2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAgICBz
dGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzaW1wbGVVbml0c1tdID0geworICAgICAgICAi
YWNyZSJfcywKKyAgICAgICAgImJpdCJfcywKKyAgICAgICAgImJ5dGUiX3MsCisgICAgICAgICJj
ZWxzaXVzIl9zLAorICAgICAgICAiY2VudGltZXRlciJfcywKKyAgICAgICAgImRheSJfcywKKyAg
ICAgICAgImRlZ3JlZSJfcywKKyAgICAgICAgImZhaHJlbmhlaXQiX3MsCisgICAgICAgICJmbHVp
ZC1vdW5jZSJfcywKKyAgICAgICAgImZvb3QiX3MsCisgICAgICAgICJnYWxsb24iX3MsCisgICAg
ICAgICJnaWdhYml0Il9zLAorICAgICAgICAiZ2lnYWJ5dGUiX3MsCisgICAgICAgICJncmFtIl9z
LAorICAgICAgICAiaGVjdGFyZSJfcywKKyAgICAgICAgImhvdXIiX3MsCisgICAgICAgICJpbmNo
Il9zLAorICAgICAgICAia2lsb2JpdCJfcywKKyAgICAgICAgImtpbG9ieXRlIl9zLAorICAgICAg
ICAia2lsb2dyYW0iX3MsCisgICAgICAgICJraWxvbWV0ZXIiX3MsCisgICAgICAgICJsaXRlciJf
cywKKyAgICAgICAgIm1lZ2FiaXQiX3MsCisgICAgICAgICJtZWdhYnl0ZSJfcywKKyAgICAgICAg
Im1ldGVyIl9zLAorICAgICAgICAibWlsZSJfcywKKyAgICAgICAgIm1pbGUtc2NhbmRpbmF2aWFu
Il9zLAorICAgICAgICAibWlsbGlsaXRlciJfcywKKyAgICAgICAgIm1pbGxpbWV0ZXIiX3MsCisg
ICAgICAgICJtaWxsaXNlY29uZCJfcywKKyAgICAgICAgIm1pbnV0ZSJfcywKKyAgICAgICAgIm1v
bnRoIl9zLAorICAgICAgICAib3VuY2UiX3MsCisgICAgICAgICJwZXJjZW50Il9zLAorICAgICAg
ICAicGV0YWJ5dGUiX3MsCisgICAgICAgICJwb3VuZCJfcywKKyAgICAgICAgInNlY29uZCJfcywK
KyAgICAgICAgInN0b25lIl9zLAorICAgICAgICAidGVyYWJpdCJfcywKKyAgICAgICAgInRlcmFi
eXRlIl9zLAorICAgICAgICAid2VlayJfcywKKyAgICAgICAgInlhcmQiX3MsCisgICAgICAgICJ5
ZWFyIl9zLAorICAgIH07CisgICAgLy8gRklYTUU6IERvIGJpbmFyeS1zZWFyY2guCisgICAgZm9y
IChjb25zdCBBU0NJSUxpdGVyYWwmIHVuaXQgOiBzaW1wbGVVbml0cykgeworICAgICAgICBpZiAo
dW5pdElkZW50aWZpZXIgPT0gU3RyaW5nVmlldyh1bml0KSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGlzV2VsbEZv
cm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllcgor
ICAgIGlmIChpc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1bml0SWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIHN1YnN0cmluZyAiLXBlci0i
IGRvZXMgbm90IG9jY3VyIGV4YWN0bHkgb25jZSBpbiB1bml0SWRlbnRpZmllciwgdGhlbiByZXR1
cm4gZmFsc2UuCisgICAgYXV0byBwZXIgPSBTdHJpbmdWaWV3KCItcGVyLSJfcyk7CisgICAgYXV0
byBwb3MgPSB1bml0SWRlbnRpZmllci5maW5kKHBlcik7CisgICAgaWYgKHBvcyA9PSBXVEY6Om5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50
aWZpZXIuZmluZChwZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RG
Ojpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIHJlc3Vs
dCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNl
LCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBwb3MpOworICAgIGlmICghaXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50
aWZpZXIobnVtZXJhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhl
IHJlc3VsdCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcikg
aXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gZGVub21pbmF0b3IgPSB1bml0
SWRlbnRpZmllci5zdWJzdHJpbmcocG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBpZiAoIWlzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQKIHZvaWQgSW50bE51bWJlckZv
cm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewpAQCAtMTk3LDE0ICsy
ODEsMTkgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbnVtYmVyaW5nU3lzdGVt
ID0gcmVzdWx0LmdldCgibnUiX3MpOwogCi0gICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFs
Iik7CisgICAgLy8gU2V0TnVtYmVyRm9ybWF0VW5pdE9wdGlvbnMoaW50bE9iamVjdCwgb3B0aW9u
cykKKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNldG51bWJlcmZvcm1hdHVu
aXRvcHRpb25zCisKKyAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwi
LCAicGVyY2VudCIsICJjdXJyZW5jeSIsICJ1bml0IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIg
XCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBcImN1cnJlbmN5XCIsIG9yIFwidW5pdFwiIiwgImRl
Y2ltYWwiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIGlm
IChzdHlsZVN0cmluZyA9PSAiZGVjaW1hbCIpCisgICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNp
bWFsIl9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkRlY2ltYWw7Ci0gICAgZWxzZSBpZiAo
c3R5bGVTdHJpbmcgPT0gInBlcmNlbnQiKQorICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJw
ZXJjZW50Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OlBlcmNlbnQ7Ci0gICAgZWxzZSBp
ZiAoc3R5bGVTdHJpbmcgPT0gImN1cnJlbmN5IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAiY3VycmVuY3kiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6Q3VycmVuY3k7CisgICAg
ZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInVuaXQiX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHls
ZTo6VW5pdDsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0y
MjksNjAgKzMxOCwxMDggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgY3VycmVu
Y3lEaWdpdHMgPSBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY3VycmVuY3kpOwogICAgIH0KIAotICAg
IFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxh
eSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1ib2wiKTsK
KyAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURp
c3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFycm93U3ltYm9sIiwgIm5hbWUiIH0sICJj
dXJyZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIFwibmFy
cm93U3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5bWJvbCIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5
KSB7Ci0gICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNvZGUiKQorICAgICAg
ICBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIl9zKQogICAgICAgICAgICAgbV9j
dXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OkNvZGU7Ci0gICAgICAgIGVsc2UgaWYg
KGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIikKKyAgICAgICAgZWxzZSBpZiAoY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5
RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOwotICAgICAgICBlbHNlIGlmIChjdXJy
ZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUiKQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURp
c3BsYXlTdHJpbmcgPT0gIm5hcnJvd1N5bWJvbCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lE
aXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w7CisgICAgICAgIGVsc2UgaWYg
KGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSJfcykKICAgICAgICAgICAgIG1fY3VycmVu
Y3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYW1lOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVt
SW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEs
IDEpOworICAgIFN0cmluZyBjdXJyZW5jeVNpZ25TdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5
U2lnbiIpLCB7ICJzdGFuZGFyZCIsICJhY2NvdW50aW5nIiB9LCAiY3VycmVuY3lTaWduIG11c3Qg
YmUgZWl0aGVyIFwic3RhbmRhcmRcIiBvciBcImFjY291bnRpbmdcIiIsICJzdGFuZGFyZCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50
ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgeworICAgICAgICBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJzdGFu
ZGFyZCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpTdGFu
ZGFyZDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJhY2NvdW50aW5n
Il9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNpZ246OkFjY291bnRp
bmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHls
ZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAwOworICAgIFN0cmluZyB1
bml0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIXVuaXQuaXNOdWxsKCkp
IHsKKyAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllcih1bml0KSkgeworICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRp
ZmllciJfcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fdW5p
dCA9IHVuaXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVu
aXQpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1
bml0IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQpOworICAgIFN0cmluZyB1bml0RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdERp
c3BsYXkiKSwgeyAic2hvcnQiLCAibmFycm93IiwgImxvbmciIH0sICJ1bml0RGlzcGxheSBtdXN0
IGJlIGVpdGhlciBcInNob3J0XCIsIFwibmFycm93XCIsIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobV9zdHlsZSA9
PSBTdHlsZTo6VW5pdCkgeworICAgICAgICBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gInNob3J0
Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpTaG9ydDsKKyAg
ICAgICAgZWxzZSBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAg
ICAgIG1fdW5pdERpc3BsYXkgPSBVbml0RGlzcGxheTo6TmFycm93OworICAgICAgICBlbHNlIGlm
ICh1bml0RGlzcGxheVN0cmluZyA9PSAibG9uZyJfcykKKyAgICAgICAgICAgIG1fdW5pdERpc3Bs
YXkgPSBVbml0RGlzcGxheTo6TG9uZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdDsKLSAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpCi0gICAgICAg
IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25E
aWdpdHMsIGN1cnJlbmN5RGlnaXRzKTsKLSAgICBlbHNlIGlmIChtX3N0eWxlID09IFN0eWxlOjpQ
ZXJjZW50KQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzOwotICAgIGVsc2UKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOworICAgIHVuc2lnbmVk
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVu
Y3kpID8gY3VycmVuY3lEaWdpdHMgOiAwOworICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdp
dHMgOiAobV9zdHlsZSA9PSBTdHlsZTo6UGVyY2VudCkgPyAwIDogMzsKIAotICAgIHVuc2lnbmVk
IG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRz
IiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQpOworICAgIEludGxOb3RhdGlvbiBub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U3RhbmRhcmQ7
CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJz
dGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2luZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3Rh
dGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2lu
ZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1h
eGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJk
Il9zKQorICAgICAgICBub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U3RhbmRhcmQ7CisgICAgZWxz
ZSBpZiAobm90YXRpb25TdHJpbmcgPT0gInNjaWVudGlmaWMiX3MpCisgICAgICAgIG5vdGF0aW9u
ID0gSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5n
ID09ICJlbmdpbmVlcmluZyJfcykKKyAgICAgICAgbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVu
Z2luZWVyaW5nOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQor
ICAgICAgICBub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6Q29tcGFjdDsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgc2V0TnVtYmVy
Rm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgbWluaW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbm90YXRp
b24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBKU1Zh
bHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0
cyIpKTsKKyAgICBTdHJpbmcgY29tcGFjdERpc3BsYXkgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNw
bGF5IiksIHsgInNob3J0IiwgImxvbmciIH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhl
ciBcInNob3J0XCIgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9
IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBp
bnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERp
Z2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIGlmIChu
b3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3RE
aXNwbGF5ID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21w
YWN0RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJs
b25nIl9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpM
b25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKICAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5n
IikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VH
cm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBz
aWduRGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyAic2hvcnQiLCAibG9uZyIg
fSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3
YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJfcykKKyAg
ICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2UgaWYgKHNp
Z25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNw
bGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9zKQorICAg
ICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNlIGlmIChz
aWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAg
ICAgc3dpdGNoIChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTI5OSwx
NSArNDM2LDE2IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGNhc2UgQ3VycmVu
Y3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgICAgICBzdHlsZSA9IFVOVU1fQ1VSUkVOQ1k7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5
bWJvbDoKKyAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0
eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMzI0LDE0ICs0NjIsMjAgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoIW1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2gg
KG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAg
dW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9O
X0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJp
YnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21h
eGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAgdW51bV9z
ZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRT
X1VTRUQsIHRydWUpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRp
bmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19NT0RF
LCBVTlVNX1JPVU5EX0hBTEZVUCk7CkBAIC0zODQsNiArNTI4LDggQEAgQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4g
InBlcmNlbnQiX3M7CiAgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAi
Y3VycmVuY3kiX3M7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CkBAIC0zOTYsNiArNTQyLDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1i
ZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lE
aXMKICAgICAgICAgcmV0dXJuICJjb2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpT
eW1ib2w6CiAgICAgICAgIHJldHVybiAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCmluZGV4IDQzMDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLjI1YzM2
ZTJhMGRiNzFlN2E0YzVkOTkwOTc3MjcyOGM2NDZhMTlkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTMzLDYgKzMzLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2VudW0gY2xhc3Mg
SW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnRE
aWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRpb24geyBTdGFu
ZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKK3RlbXBsYXRlPHR5cGVu
YW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9i
amVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQsIEludGxOb3Rh
dGlvbik7CisKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBA
IC02Niw2ICs3MCw5IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwo
SlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQ
b3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0
KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBJbnRsTm90YXRpb24pOworCiBwcml2YXRlOgogICAgIElu
dGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CkBAIC03Myw4ICs4MCwxMiBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxv
Y2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6ZV90KTsKIAotICAgIGVudW0gY2xhc3MgU3R5bGUg
OiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3kgfTsKLSAgICBlbnVtIGNsYXNz
IEN1cnJlbmN5RGlzcGxheSA6IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5LCBV
bml0IH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwg
U3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2ln
biA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OworICAgIGVudW0gY2xhc3MgVW5p
dERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OworICAgIGVudW0gY2xh
c3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNs
YXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFpl
cm8gfTsKIAogICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7CiAgICAgICAgIHZvaWQg
b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7CkBAIC04OSw2ICsxMDAsNyBAQCBjbGFz
cyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
IFN0cmluZyBtX2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3Ry
aW5nIG1fY3VycmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmlt
dW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpA
QCAtOTYsNyArMTA4LDEyIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMgeyAwIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3Vy
cmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJl
bmN5U2lnbjsKKyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNw
bGF5IG1fY29tcGFjdERpc3BsYXk7CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAg
ICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3Jv
dW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNThlNDlkYjU4ZmY5
YzZjOWVmNWNkZmVjNmJjMTc0NDRiM2NjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEs
OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyAg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3ZvaWQgc2V0TnVtYmVyRm9ybWF0RGln
aXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsT2Jq
ZWN0LCBKU09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9u
IG5vdGF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVt
SW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEs
IDEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1Zh
bHVlIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bE9iamVjdC0+
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOworCisgICAgaWYg
KCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGxPYmpl
Y3QtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7
CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwg
MSwgMjEsIDEpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bE9iamVjdC0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxPYmpl
Y3QtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIGludGxPYmplY3QtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
RnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0ID0gc3RkOjptYXgobWluaW11
bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24o
Z2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bE9iamVjdC0+bV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIGlu
dGxPYmplY3QtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRz
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5vdGF0aW9uID09IEludGxOb3Rh
dGlvbjo6Q29tcGFjdCkgeworICAgICAgICBpbnRsT2JqZWN0LT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGludGxPYmplY3QtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHM7CisgICAgaW50bE9iamVjdC0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGludGxPYmplY3QtPm1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzLmNwcAppbmRleCA2MTZlNTJlZDhlNWY5MjkxNmQ0ZjY4MzEzN2ZjZmJjNzIwMDBj
NWY3Li44MThiNmEyM2QyMzA2NTBjYzE3ZDhiZGUyM2RiMThiZWRmNjllY2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVs
ZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgpAQCAtMTI1LDM0ICsxMjYsOCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6
aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0g
dHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxf
VFlQRV9DQVJESU5BTDsKIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50
bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgc2V0TnVtYmVy
Rm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50
bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7
Ci0KLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gMDsKLSAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlv
bkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIHVuc2lnbmVkIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsK
LSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwot
Ci0gICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdl
dChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LQotICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5n
ZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Ci0KLSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkg
fHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxV
TnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1B
TCwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykp
OwpAQCAtMTYxLDE0ICsxMzYsMjAgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQ
bHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewot
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdO
SUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZSht
X251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICB9IGVsc2UgeworICAgIHN3aXRjaCAo
bV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJEaWdpdHMpOwogICAgICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fRlJBQ1RJT05f
RElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFDVElPTl9ESUdJVFMsIG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRp
bmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwor
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5f
U0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJ
Q0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTkx
LDExICsxNzIsMTggQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
bV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnR5cGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90eXBlID09IFVQTFVSQUxfVFlQRV9PUkRJ
TkFMID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIp
LCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRz
IiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGln
aXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7Ci0gICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1T
aWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cy52
YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5oCmluZGV4IGQzNzEyNzM2ZmFmYjJhMjFhMmE2N2NhYmU0ZmExODViZDdl
MDVlMWQuLmVlMmJhZmMzYzcxMzJkY2M2YmEyYzM4NDczYzUxY2NiZjcyMmFkNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5j
bHVkZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4KIApAQCAtNTMsNiArNTMsOSBAQCBjbGFzcyBJ
bnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmll
bmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRs
VHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBJbnRsTm90YXRpb24pOworCiAg
ICAgdm9pZCBpbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxv
Y2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmpl
Y3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTc5LDggKzgyLDkgQEAgY2xhc3MgSW50bFBsdXJh
bFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1f
bWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAz
IH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1
bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1f
cm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJ
SUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKaW5kZXggYTkw
OGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3Ny4uZjdhNDc5YTBiYTA3MWVmMDY4
OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
U0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKyAgICBjb25zdGV4cHIg
Y29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQor
ICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0KIAogcHJpdmF0ZToKICAgICBjb25z
dGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9j
aGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA4
YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFmMzhkLi5jMjJhOGFlMzQ0NjFjM2Iz
Y2M4MDJiZmNiNTMwMWE2NjcyYmM5ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4K
QEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7CiAgICAgU3RyaW5nVmll
dyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3RyaW5nVmlldyhjb25zdCBj
aGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0
eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXpl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0K
IAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sK
KyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwor
fQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJp
bmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3RyaW5nKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402749</attachid>
            <date>2020-06-25 11:04:17 -0700</date>
            <delta_ts>2020-06-25 19:32:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-209774-20200625110417.patch</filename>
            <type>text/plain</type>
            <size>47937</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MWJkZWFiYzAzY2U3ZWE2YWI3OTJlYTU4YmFhZjk4ODFhNDNmZDA3Li4wNzNhMmMyOTYwNmI0NjU2
YmVhNDI1MmFmNTkxOTA0NjViODMyM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAg
ICAgICAoSlNDOjppc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OmlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OnN0eWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lE
aXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6c2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5pdGlh
bGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZl
ZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisK
IDIwMjAtMDYtMjQgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbSlNDXSBoYW5kbGUgUHV0L0RlZmluZVByaXZhdGVGaWVsZCBpbiByZXNldFB1dEJ5SUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggZGQ1ZjNjZWE3MzdmMDZkNTM1MTVjOTgzYmRjMTVjZGMyZGVhZjgzYy4uMDE1MWYwZTdkZTU1
YjExNGNlMDMxY2Y0ODg1MjkzODA0NGUyZGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
Ni0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01B
LTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BU0NJ
SUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorCiAyMDIwLTA2LTI0ICBVbWFyIElxYmFsICA8
dWlxYmFsQGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgcmVzdXJyZWN0IHRoZSBvbGRl
ciBwYXRjaCB0aGF0IGNvbGxlY3RzIHNvbWUgc3RhdGlzdGljcyBvZiB3ZWIgQVBJIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJjNmUwNGVhYjgzODhjMjI4
MGRhNTA4NDNhNjNiZGQuLjBiNWRiNWMyOTlkYmYzZjE1ODM3NTI4MGFhM2UwYWNjZjFhMzk3YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzg5LDYgKzE3ODksNyBAQAogCQlF
MzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhEMDYwQzFGOEU4MTQx
MDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyMkU1QTMxREE2NDQzOTAwNkU3NzA5IC8q
IERGR1NuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmgg
Ki87IH07CiAJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBNTFE
QTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovOyB9OworCQlFMzIzMTE2OTI0
QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjMxMTY4MjRBMURDMkYwMDY5M0RB
NSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovOyB9OwogCQlFMzI1OTU2NDIxRkRBMkM5
MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBS
ZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovOyB9OwogCQlFMzI1QTM2MDIyMjExNTkwMDA3MzQ5
QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1By
b3RvdHlwZUlubGluZXMuaCAqLzsgfTsKIAkJRTMyODJCQkIxRkU5MzBBRjAwRURBRjcxIC8qIFlh
cnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5NDQsNiArNDk0NSw3
IEBACiAJCUUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NuaXBwZXRQYXJhbXMuaDsgcGF0aCA9
IGRmZy9ERkdTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuY3BwOyBwYXRoID0g
ZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1zLmg7IHBhdGggPSBmdGwvRlRM
U25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzIzMTE2ODI0
QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bE51bWJlckZvcm1hdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVBMzVGMjIyMTE1OEEwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3Rv
dHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNkM0OTYxRUNC
RUY1NzAwQTlBOTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzI3Miw2ICs3Mjc0LDcgQEAKIAkJCQlBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51
bWJlckZvcm1hdC5oICovLAogCQkJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzIzMTE2ODI0QTFE
QzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLywKIAkJCQlBMUQ3OTJG
QTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
aCAqLywKIAkJCQlBMTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8s
CkBAIC05NzU1LDYgKzk3NTgsNyBAQAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIElu
dGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTMwMTFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyog
SW50bE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYz
YWIxNzk5MjJlYmE4MzhhYTI5MzguLjBhMjBhYTQ2MDNiM2E1ODllNzdlOWYwYTVlZjY0NWRmZTU5
MWE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCkBAIC0zMCwxMiArMzAsMTcgQEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKKyNpZiBI
QVZFKElDVV9VTlVNRikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3Jt
YXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ5LDExICs1NCwy
NSBAQCBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBzaXplX3Qgc2l6ZTsKIH07
CiAKKyNpZiBIQVZFKElDVV9VTlVNRikKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJlckZv
cm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1hdHRlciogbnVtYmVyRm9ybWF0
dGVyKSBjb25zdAoreworICAgIGlmIChudW1iZXJGb3JtYXR0ZXIpCisgICAgICAgIHVudW1mX2Ns
b3NlKG51bWJlckZvcm1hdHRlcik7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6VUZvcm1h
dHRlZE51bWJlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUZvcm1hdHRlZE51bWJlciogZm9ybWF0dGVk
TnVtYmVyKSBjb25zdAoreworICAgIGlmIChmb3JtYXR0ZWROdW1iZXIpCisgICAgICAgIHVudW1m
X2Nsb3NlUmVzdWx0KGZvcm1hdHRlZE51bWJlcik7Cit9CisjZWxzZQogdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBu
dW1iZXJGb3JtYXQpIGNvbnN0CiB7CiAgICAgaWYgKG51bWJlckZvcm1hdCkKICAgICAgICAgdW51
bV9jbG9zZShudW1iZXJGb3JtYXQpOwogfQorI2VuZGlmCiAKIEludGxOdW1iZXJGb3JtYXQqIElu
dGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpA
QCAtMTE5LDcgKzEzOCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMo
Y29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKICAgICAvLyAxMS4xLjEgVGhlIGFic3RyYWN0IG9wZXJh
dGlvbiBDdXJyZW5jeURpZ2l0cyAoY3VycmVuY3kpCiAgICAgLy8gIklmIHRoZSBJU08gNDIxNyBj
dXJyZW5jeSBhbmQgZnVuZHMgY29kZSBsaXN0IGNvbnRhaW5zIGN1cnJlbmN5IGFzIGFuIGFscGhh
YmV0aWMgY29kZSwKICAgICAvLyB0aGVuIHJldHVybiB0aGUgbWlub3IgdW5pdCB2YWx1ZSBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSBjdXJyZW5jeSBmcm9tIHRoZSBsaXN0OyBlbHNlIHJldHVybiAyLgot
ICAgIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1td
ID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPGNvbnN0IGNoYXIqLCB1bnNpZ25l
ZD4gY3VycmVuY3lNaW5vclVuaXRzW10gPSB7CiAgICAgICAgIHsgIkJIRCIsIDMgfSwKICAgICAg
ICAgeyAiQklGIiwgMCB9LAogICAgICAgICB7ICJCWVIiLCAwIH0sCkBAIC0xNTMsNiArMTcyLDg5
IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY29uc3QgU3RyaW5nJiBj
dXJyZW5jeSkKICAgICByZXR1cm4gMjsKIH0KIAorc3RhdGljIGJvb2wgaXNTYW5jdGlvbmVkU2lt
cGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAgICBzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzaW1wbGVVbml0c1tdID0geworICAgICAgICAiYWNy
ZSJfcywKKyAgICAgICAgImJpdCJfcywKKyAgICAgICAgImJ5dGUiX3MsCisgICAgICAgICJjZWxz
aXVzIl9zLAorICAgICAgICAiY2VudGltZXRlciJfcywKKyAgICAgICAgImRheSJfcywKKyAgICAg
ICAgImRlZ3JlZSJfcywKKyAgICAgICAgImZhaHJlbmhlaXQiX3MsCisgICAgICAgICJmbHVpZC1v
dW5jZSJfcywKKyAgICAgICAgImZvb3QiX3MsCisgICAgICAgICJnYWxsb24iX3MsCisgICAgICAg
ICJnaWdhYml0Il9zLAorICAgICAgICAiZ2lnYWJ5dGUiX3MsCisgICAgICAgICJncmFtIl9zLAor
ICAgICAgICAiaGVjdGFyZSJfcywKKyAgICAgICAgImhvdXIiX3MsCisgICAgICAgICJpbmNoIl9z
LAorICAgICAgICAia2lsb2JpdCJfcywKKyAgICAgICAgImtpbG9ieXRlIl9zLAorICAgICAgICAi
a2lsb2dyYW0iX3MsCisgICAgICAgICJraWxvbWV0ZXIiX3MsCisgICAgICAgICJsaXRlciJfcywK
KyAgICAgICAgIm1lZ2FiaXQiX3MsCisgICAgICAgICJtZWdhYnl0ZSJfcywKKyAgICAgICAgIm1l
dGVyIl9zLAorICAgICAgICAibWlsZSJfcywKKyAgICAgICAgIm1pbGUtc2NhbmRpbmF2aWFuIl9z
LAorICAgICAgICAibWlsbGlsaXRlciJfcywKKyAgICAgICAgIm1pbGxpbWV0ZXIiX3MsCisgICAg
ICAgICJtaWxsaXNlY29uZCJfcywKKyAgICAgICAgIm1pbnV0ZSJfcywKKyAgICAgICAgIm1vbnRo
Il9zLAorICAgICAgICAib3VuY2UiX3MsCisgICAgICAgICJwZXJjZW50Il9zLAorICAgICAgICAi
cGV0YWJ5dGUiX3MsCisgICAgICAgICJwb3VuZCJfcywKKyAgICAgICAgInNlY29uZCJfcywKKyAg
ICAgICAgInN0b25lIl9zLAorICAgICAgICAidGVyYWJpdCJfcywKKyAgICAgICAgInRlcmFieXRl
Il9zLAorICAgICAgICAid2VlayJfcywKKyAgICAgICAgInlhcmQiX3MsCisgICAgICAgICJ5ZWFy
Il9zLAorICAgIH07CisgICAgLy8gRklYTUU6IERvIGJpbmFyeS1zZWFyY2guCisgICAgZm9yIChj
b25zdCBBU0NJSUxpdGVyYWwmIHVuaXQgOiBzaW1wbGVVbml0cykgeworICAgICAgICBpZiAodW5p
dElkZW50aWZpZXIgPT0gU3RyaW5nVmlldyh1bml0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGlzV2VsbEZvcm1l
ZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllcgorICAg
IGlmIChpc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1bml0SWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIHN1YnN0cmluZyAiLXBlci0iIGRv
ZXMgbm90IG9jY3VyIGV4YWN0bHkgb25jZSBpbiB1bml0SWRlbnRpZmllciwgdGhlbiByZXR1cm4g
ZmFsc2UuCisgICAgYXV0byBwZXIgPSBTdHJpbmdWaWV3KCItcGVyLSJfcyk7CisgICAgYXV0byBw
b3MgPSB1bml0SWRlbnRpZmllci5maW5kKHBlcik7CisgICAgaWYgKHBvcyA9PSBXVEY6Om5vdEZv
dW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50aWZp
ZXIuZmluZChwZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RGOjpu
b3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBv
ZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNlLCB0
aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1
YnN0cmluZygwLCBwb3MpOworICAgIGlmICghaXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZp
ZXIobnVtZXJhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIHJl
c3VsdCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcikgaXMg
ZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gZGVub21pbmF0b3IgPSB1bml0SWRl
bnRpZmllci5zdWJzdHJpbmcocG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBpZiAoIWlzU2FuY3Rp
b25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1h
dDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewpAQCAtMTkxLDIwICsyOTMs
MjUgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbG9jYWxlID0gcmVzdWx0Lmdl
dCgibG9jYWxlIl9zKTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBO
dW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZv
cm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbV9udW1iZXJpbmdTeXN0ZW0gPSByZXN1bHQuZ2V0KCJudSJfcyk7CiAKLSAgICBTdHJp
bmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5j
eSIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgb3Ig
XCJjdXJyZW5jeVwiIiwgImRlY2ltYWwiKTsKKyAgICAvLyBTZXROdW1iZXJGb3JtYXRVbml0T3B0
aW9ucyhpbnRsT2JqZWN0LCBvcHRpb25zKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtc2V0bnVtYmVyZm9ybWF0dW5pdG9wdGlvbnMKKworICAgIFN0cmluZyBzdHlsZVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiwgInVuaXQiIH0s
ICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIFwiY3VycmVu
Y3lcIiwgb3IgXCJ1bml0XCIiLCAiZGVjaW1hbCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIikKKyAgICBp
ZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6
RGVjaW1hbDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAicGVyY2VudCIpCisgICAgZWxz
ZSBpZiAoc3R5bGVTdHJpbmcgPT0gInBlcmNlbnQiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHls
ZTo6UGVyY2VudDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAiY3VycmVuY3kiKQorICAg
IGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSJfcykKICAgICAgICAgbV9zdHlsZSA9
IFN0eWxlOjpDdXJyZW5jeTsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAidW5pdCJfcykK
KyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpVbml0OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAKQEAgLTIyOSw2MCArMzM2LDEyOSBAQCB2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogICAgICAgICBjdXJyZW5jeURpZ2l0cyA9IGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhj
dXJyZW5jeSk7CiAgICAgfQogCi0gICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hbWUiIH0s
ICJjdXJyZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9y
IFwibmFtZVwiIiwgInN5bWJvbCIpOworICAgIFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcg
PSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYXJy
b3dTeW1ib2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNv
ZGVcIiwgXCJzeW1ib2xcIiwgXCJuYXJyb3dTeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9s
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAobV9z
dHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0
cmluZyA9PSAiY29kZSIpCisgICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNv
ZGUiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6
Q29kZTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wi
KQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCJfcykK
ICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w7
Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSIpCisgICAg
ICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFycm93U3ltYm9sIl9zKQor
ICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5
bWJvbDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIl9z
KQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
SW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgU3RyaW5nIGN1cnJlbmN5U2lnblN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIHsgInN0YW5kYXJkIiwgImFjY291bnRpbmci
IH0sICJjdXJyZW5jeVNpZ24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNjb3Vu
dGluZ1wiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7
CisgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgICAgIGlmIChjdXJy
ZW5jeVNpZ25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeVNp
Z24gPSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeVNp
Z25TdHJpbmcgPT0gImFjY291bnRpbmciX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2lnbiA9
IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURp
Z2l0cyA6IDA7CisgICAgU3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwgeyB9LCBudWxs
cHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgIGlmICghdW5pdC5pc051bGwoKSkgeworICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZFVuaXRJ
ZGVudGlmaWVyKHVuaXQpKSB7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInVuaXQgaXMgbm90IGEg
d2VsbC1mb3JtZWQgdW5pdCBpZGVudGlmaWVyIl9zKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9u
ZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwg
b3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9
PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpO
YXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQor
ICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0
ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGln
aXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9ICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/
IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgSW50bE5vdGF0aW9uIG5vdGF0aW9uID0g
SW50bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBTdHJpbmcgbm90YXRpb25TdHJpbmcgPSBpbnRs
U3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5vdGF0aW9uIiksIHsgInN0YW5kYXJkIiwgInNjaWVudGlmaWMiLCAiZW5naW5lZXJp
bmciLCAiY29tcGFjdCIgfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwic3RhbmRhcmRcIiwg
XCJzY2llbnRpZmljXCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0XCIiLCAic3RhbmRh
cmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChub3Rh
dGlvblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgIG5vdGF0aW9uID0gSW50bE5vdGF0
aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2NpZW50aWZp
YyJfcykKKyAgICAgICAgbm90YXRpb24gPSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM7CisgICAg
ZWxzZSBpZiAobm90YXRpb25TdHJpbmcgPT0gImVuZ2luZWVyaW5nIl9zKQorICAgICAgICBub3Rh
dGlvbiA9IEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc7CisgICAgZWxzZSBpZiAobm90YXRpb25T
dHJpbmcgPT0gImNvbXBhY3QiX3MpCisgICAgICAgIG5vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpD
b21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBK
U1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERp
Z2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0
aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0LCBub3RhdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFN0cmluZyBjb21wYWN0RGlzcGxheSA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyAic2hvcnQiLCAibG9uZyIgfSwgImNvbXBh
Y3REaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiBvciBcImxvbmdcIiIsICJzaG9ydCIp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERp
Z2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM7CisgICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkg
eworICAgICAgICBpZiAoY29tcGFjdERpc3BsYXkgPT0gInNob3J0Il9zKQorICAgICAgICAgICAg
bV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpTaG9ydDsKKyAgICAgICAgZWxzZSBp
ZiAoY29tcGFjdERpc3BsYXkgPT0gImxvbmciX3MpCisgICAgICAgICAgICBtX2NvbXBhY3REaXNw
bGF5ID0gQ29tcGFjdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIFRyaVN0YXRlIHVzZUdyb3VwaW5nID0g
aW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6
OkZhbHNlOwogCisgICAgU3RyaW5nIHNpZ25EaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxh
eSIpLCB7ICJzaG9ydCIsICJsb25nIiB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJh
dXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiLCAiYXV0byIp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHNpZ25E
aXNwbGF5ID09ICJhdXRvIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6
OkF1dG87CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0gIm5ldmVyIl9zKQorICAgICAgICBt
X3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6Ok5ldmVyOworICAgIGVsc2UgaWYgKHNpZ25EaXNw
bGF5ID09ICJhbHdheXMiX3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6
QWx3YXlzOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJleGNlcHRaZXJvIl9zKQorICAg
ICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm87CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIE9wdGlvbnMgYXJlIG9idGFp
bmVkLiBDb25maWd1cmUgZm9ybWF0dGVyIGhlcmUuCisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyAg
ICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVpbGRlcjsKKworICAgIHN3aXRjaCAobV9zdHlsZSkg
eworICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CisgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKKyAg
ICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAgIH0KKwor
ICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOworICAgIFN0
cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxV
TnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNr
ZWxldG9uQW5kTG9jYWxlKHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQo
KSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVz
KSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQi
X3MpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5
bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CiAgICAgY2Fz
ZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTI5OSw2NSArNDc1LDg2IEBAIHZvaWQgSW50bE51bWJlckZv
cm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhCiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgICAg
ICBzdHlsZSA9IFVOVU1fQ1VSUkVOQ1k7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxh
eTo6TmFtZToKICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3Blbihz
dHlsZSwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1
cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKICAgICAgICAgdW51bV9z
ZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NPREUs
IFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3VycmVu
Y3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgeworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlw
ZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VS
X0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsK
ICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlO
X1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAg
ICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklG
SUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
TnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdy
b3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CisjZW5kaWYKIH0KIAogLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyNpZiBIQVZFKElDVV9VTlVN
RikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVf
cHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVu
UmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9m
b3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0
aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0YXR1cyA9IGNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZSwgbV9udW1iZXJGb3Jt
YXQuZ2V0KCksIHZhbHVlLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBq
c1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25zdAogewot
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0z
NjgsMTAgKzU2NSwyNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgYXV0byogcmF3U3Ry
aW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkp
OwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VOVU1GKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1h
dERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERl
Y2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzU5Niw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJj
ZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJl
bmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwpAQCAtMzk2LDYgKzYxMCw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6
TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0K
QEAgLTUxNSwyMCArNzMxLDM4IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0
c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7
Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9v
cGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmll
bGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJh
dG9yIl9zKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9V
TlVNRikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlx
dWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9v
cGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVt
Zl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZl
cik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
KTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmll
bGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1
cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
KTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVt
YmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisjZW5kaWYKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3Ry
aW5nKHJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaAppbmRleCA0MzA0YjIyYThjNmE1MTFmNzRlMmJkY2IwNTM4OGQ1YjY1Yjcz
NDc2Li4yNmRmM2E0Y2Q5ZDJiNTE0NzZmMTliOGJhZjc1NGNkZjhhNDdhZWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0zMSw4
ICszMSwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmICFkZWZpbmVkKEhBVkVfSUNVX1VO
VU1GKQorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDYyCisjZGVmaW5lIEhBVkVfSUNV
X1VOVU1GIDEKKyNlbmRpZgorI2VuZGlmCisKIGNsYXNzIEpTQm91bmRGdW5jdGlvbjsKIAorZW51
bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9uRGlnaXRzLCBTaWdu
aWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07CitlbnVtIGNsYXNzIEludGxOb3RhdGlv
biB7IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwordGVtcGxh
dGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCwg
SW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKQEAgLTY2LDYgKzc2LDkgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxs
cHRyKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lk
IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwg
SlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQsIEludGxOb3RhdGlvbik7CisKIHByaXZhdGU6
CiAgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKQEAgLTczLDIyICs4NiwzNiBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIFZlY3RvcjxT
dHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6ZV90KTsKIAotICAgIGVudW0gY2xh
c3MgU3R5bGUgOiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3kgfTsKLSAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5RGlzcGxheSA6IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2wsIE5hbWUg
fTsKLQotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3Bl
cmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICBlbnVtIGNsYXNzIFN0
eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5LCBVbml0IH07CisgICAg
ZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJy
b3dTeW1ib2wsIE5hbWUgfTsKKyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3Qg
eyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1
aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERp
c3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNw
bGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CiAKICAgICBX
cml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworI2lmIEhBVkUoSUNV
X1VOVU1GKQorICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciB7CisgICAgICAgIHZv
aWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0dGVyKikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1
Y3QgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUZv
cm1hdHRlZE51bWJlciopIGNvbnN0OworICAgIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1i
ZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsK
KyNlbHNlCisgICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKKyAgICAgICAgdm9pZCBv
cGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKKyAgICB9OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7
CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdT
eXN0ZW07CiAgICAgU3RyaW5nIG1fY3VycmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1
bnNpZ25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzIHsgMyB9OwpAQCAtOTYsNyArMTIzLDEyIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNp
bWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJl
bmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKKyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5Owor
ICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CisgICAgU2lnbkRpc3BsYXkgbV9z
aWduRGlzcGxheTsKICAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJv
dW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIzNThlNDlkYjU4ZmY5YzZjOWVmNWNkZmVjNmJjMTc0NDRiM2NjNjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5l
cy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIK
KyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyAgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3ZvaWQgc2V0
TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElu
dGxUeXBlKiBpbnRsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dCwgSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1
bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJE
aWdpdHMiKSwgMSwgMjEsIDEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBKU1ZhbHVlIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+
Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFj
dGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
CisgICAgSlNWYWx1ZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25E
aWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50
RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAg
ICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisg
ICAgaW50bE9iamVjdC0+bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGln
aXRzOworCisgICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIGludGxPYmplY3QtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2ln
bmlmaWNhbnREaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bE9iamVjdC0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Cisg
ICAgICAgIGludGxPYmplY3QtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtaW5p
bXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25E
aWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGxPYmplY3QtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHVuc2ln
bmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2Jh
bE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0ID0g
c3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0KTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
aW50bE9iamVjdC0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM7CisgICAgICAgIGludGxPYmplY3QtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11
bUZyYWN0aW9uRGlnaXRzOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgeworICAgICAgICBpbnRsT2JqZWN0LT5tX3Jv
dW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludGxPYmplY3QtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bE9iamVjdC0+bV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGludGxPYmpl
Y3QtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCA2MTZlNTJlZDhlNWY5MjkxNmQ0ZjY4
MzEzN2ZjZmJjNzIwMDBjNWY3Li44MThiNmEyM2QyMzA2NTBjYzE3ZDhiZGUyM2RiMThiZWRmNjll
Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMTI1LDM0ICsxMjYsOCBAQCB2b2lkIElu
dGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBVUExVUkFMX1RZUEVfT1JE
SU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTDsKIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRl
Z2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7
CisgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0
aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11
bUludGVnZXJEaWdpdHM7Ci0KLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0ID0gMDsKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21p
bmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rp
b25EaWdpdHMsIDN1KTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRs
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIw
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZy
YWN0aW9uRGlnaXRzOwotCi0gICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLQotICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50
bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0
cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICB9CiAKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVs
bHB0ciwgJnN0YXR1cykpOwpAQCAtMTYxLDE0ICsxMzYsMjAgQEAgdm9pZCBJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cykgewotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7Ci0gICAgICAgIHVudW1f
c2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9E
SUdJVFMsIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwotICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRf
RElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICB9IGVsc2Ug
eworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJEaWdp
dHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NSU5fRlJBQ1RJT05fRElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFDVElP
Tl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgdW51bV9z
ZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRT
X1VTRUQsIHRydWUpOworICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyk7CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwpAQCAtMTkxLDExICsxNzIsMTggQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90eXBlID09IFVQ
TFVSQUxfVFlQRV9PUkRJTkFMID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
SW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0g
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7
Ci0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgp
KSk7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgewor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFj
dGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhp
bXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERp
Z2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNp
Z25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IGQzNzEyNzM2ZmFmYjJhMjFhMmE2
N2NhYmU0ZmExODViZDdlMDVlMWQuLmVlMmJhZmMzYzcxMzJkY2M2YmEyYzM4NDczYzUxY2NiZjcy
MmFkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSA8dW5pY29k
ZS91bnVtLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4KIApAQCAtNTMsNiAr
NTMsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAKICAgICBERUNMQVJFX0lORk87CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRs
VHlwZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9i
YWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBJbnRs
Tm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxl
Y3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiBy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTc5LDggKzgyLDkgQEAg
Y2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5zaWduZWQg
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICBJbnRs
Um91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25E
aWdpdHMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRl
cmFsLmgKaW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3Ny4uZjdh
NDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FT
Q0lJTGl0ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwg
ewogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAotICAg
IGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0K
KyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0KIAogcHJp
dmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaAppbmRleCA4YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFmMzhkLi5j
MjJhOGFlMzQ0NjFjM2IzY2M4MDJiZmNiNTMwMWE2NjcyYmM5ZWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvTENoYXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7
CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3Ry
aW5nVmlldyhjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBzdGF0aWMg
U3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBAIGlubGluZSBTdHJpbmdW
aWV3OjpTdHJpbmdWaWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRl
cmFsIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBT
dHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3RyaW5nKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402843</attachid>
            <date>2020-06-25 19:32:28 -0700</date>
            <delta_ts>2020-06-25 22:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200625193228.patch</filename>
            <type>text/plain</type>
            <size>65979</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YmM5OTE0YWRhMzEzMGJlOWQ3ZTMzMzY3Nzk1OThiYTBhYmE0ZmUyLi41ZjAyNjA2M2Q1Mzk0ZTcw
M2ZlNTI4ZmU4YWIzM2ViMGYyYmUzMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAg
ICAgICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFz
dXJlVW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6aXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAg
ICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6bnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2VsbEZvcm1lZFVuaXQ6OmRlbm9taW5hdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6aXNXZWxs
Rm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpzZXRO
dW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKwogMjAyMC0wNi0y
NSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI2MzAzNSk6IHN0cmVzcy9nZXQtcHJvdG90eXBlLW9mLmpzIGJyb2tlbiBvbiBzMzkweApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCA0MjdiMDE2YjM5MzA4NzllY2VlMDczNDkyMzdjNjQ2NDY1ZjAyOTkwLi5mMTQ0ZmY4MTgx
NWEyOWIxM2ZmNTVkMzlkMTQzODcwYjBjYzQzNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIw
LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBVbmlmaWVkIEludGwuTnVtYmVyRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKwogMjAy
MC0wNi0yNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
bmV3IHRlbXBsYXRlZCBzdHJpbmcgdHlwZSB0byBoZWxwIHdyaXRlIG1vcmUgaWRpb21hdGljIHBh
cnNpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjg1MWMxMTcyYzZl
MDRlYWI4Mzg4YzIyODBkYTUwODQzYTYzYmRkLi4wYjVkYjVjMjk5ZGJmM2YxNTgzNzUyODBhYTNl
MGFjY2YxYTM5N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc4OSw2ICsx
Nzg5LDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNjcmlwdEZldGNoUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMjJFNUEzMURBNjQ0
MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25p
cHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2RTc3MDkgLyogRlRMU25p
cHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCAqLzsgfTsK
KwkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIzMTE2ODI0
QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTMy
NTk1NjQyMUZEQTJDOTAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1OTU2MzIxRkRBMkM4
MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLzsgfTsKIAkJRTMyNUEzNjAy
MjIxMTU5MDAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVBMzVGMjIyMTE1OEEwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi87IH07CiAJCUUzMjgyQkJCMUZFOTMwQUYw
MEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00
OTQ0LDYgKzQ5NDUsNyBAQAogCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25pcHBl
dFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTbmlwcGV0UGFy
YW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1z
LmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5oOyBw
YXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxE
YXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBHbG9i
YWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1QTM1RjIy
MjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcyNzIsNiArNzI3NCw3IEBACiAJCQkJQTFENzkyRjcxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLywKIAkJCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlBMUQ3OTJGOTFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJ
RTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi8s
CiAJCQkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwICovLAogCQkJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmggKi8sCiAJCQkJQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxP
YmplY3QuY3BwICovLApAQCAtOTc1NSw2ICs5NzU4LDcgQEAKIAkJCQlBMUQ3OTJGRDFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzky
RkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjMxMTY5MjRBMURDMzUw
MDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQkJGRjIxQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBjMzhmZTk5
ZTJmNGYwYTNkYjJmM2FiMTc5OTIyZWJhODM4YWEyOTM4Li4xMDVjZjE4NDMxODVhYjFjODY3ZDg0
ODEzZjYwZmJlOGJkY2YxZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXQuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51
bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNDIsNiArNDMs
NyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbgogCiBuYW1lc3BhY2UgSW50bE51bWJlckZvcm1h
dEludGVybmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVuc2lvbktleXNb
MV0gPSB7ICJudSIgfTsKK2NvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAogc3Ry
dWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CkBAIC00OSwxMSArNTEsMjUgQEAgc3RydWN0IElu
dGxOdW1iZXJGb3JtYXRGaWVsZCB7CiAgICAgc2l6ZV90IHNpemU7CiB9OwogCisjaWYgSEFWRShJ
Q1VfVU5VTUYpCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
OjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqIG51bWJlckZvcm1hdHRlcikgY29uc3QKK3sK
KyAgICBpZiAobnVtYmVyRm9ybWF0dGVyKQorICAgICAgICB1bnVtZl9jbG9zZShudW1iZXJGb3Jt
YXR0ZXIpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVGb3JtYXR0ZWROdW1iZXJEZWxl
dGVyOjpvcGVyYXRvcigpKFVGb3JtYXR0ZWROdW1iZXIqIGZvcm1hdHRlZE51bWJlcikgY29uc3QK
K3sKKyAgICBpZiAoZm9ybWF0dGVkTnVtYmVyKQorICAgICAgICB1bnVtZl9jbG9zZVJlc3VsdChm
b3JtYXR0ZWROdW1iZXIpOworfQorI2Vsc2UKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJl
ckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBj
b25zdAogewogICAgIGlmIChudW1iZXJGb3JtYXQpCiAgICAgICAgIHVudW1fY2xvc2UobnVtYmVy
Rm9ybWF0KTsKIH0KKyNlbmRpZgogCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKQEAgLTExOSw3ICsxMzUs
NyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmluZyYg
Y3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3VycmVuY3lE
aWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kgYW5kIGZ1
bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNvZGUsCiAg
ICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0
aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6OnBhaXI8
Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlu
b3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJRiIsIDAg
fSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE2OSwxMjggQEAgc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQogICAg
IHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4KK2NsYXNz
IE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgTWVhc3VyZVVuaXQoQVNDSUlM
aXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsgfQorCisgICAgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgY29uc3Rl
eHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdWJUeXBlOyB9CisK
K3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAgICBBU0NJSUxpdGVyYWwgbV9z
dWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBpc1NhbmN0aW9uZWRT
aW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIHN0
YXRpYyBjb25zdGV4cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAgICAgeyAi
YXJlYSJfcywgImFjcmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVy
ZSJfcywgImNlbHNpdXMiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGltZXRlciJf
cyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7ICJhbmds
ZSJfcywgImRlZ3JlZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZhaHJlbmhl
aXQiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwKKyAgICAg
ICAgeyAibGVuZ3RoIl9zLCAiZm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJnYWxs
b24iX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAgICAgICAg
eyAiZGlnaXRhbCJfcywgImdpZ2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJncmFt
Il9zIH0sCisgICAgICAgIHsgImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAgIHsgImR1
cmF0aW9uIl9zLCAiaG91ciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNoIl9zIH0s
CisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0
YWwiX3MsICJraWxvYnl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dyYW0iX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAgIHsgInZv
bHVtZSJfcywgImxpdGVyIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYml0Il9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAgICB7ICJs
ZW5ndGgiX3MsICJtZXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlIl9zIH0s
CisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisgICAgICAg
IHsgInZvbHVtZSJfcywgIm1pbGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAi
bWlsbGltZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vjb25kIl9z
IH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAgIHsgImR1
cmF0aW9uIl9zLCAibW9udGgiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNlIl9zIH0s
CisgICAgICAgIHsgImNvbmNlbnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7ICJkaWdp
dGFsIl9zLCAicGV0YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5kIl9zIH0s
CisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJzdG9uZSJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRp
b24iX3MsICJ3ZWVrIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3MgfSwKKyAg
ICAgICAgeyAiZHVyYXRpb24iX3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKworICAgIC8vIEZJWE1F
OiBEbyBiaW5hcnktc2VhcmNoLgorICAgIGZvciAoY29uc3QgYXV0byYgdW5pdCA6IHNpbXBsZVVu
aXRzKSB7CisgICAgICAgIGlmICh1bml0SWRlbnRpZmllciA9PSBTdHJpbmdWaWV3KHVuaXQuc3Vi
VHlwZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB1bml0OworICAgIH0KKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworfQorCitjbGFzcyBXZWxsRm9ybWVkVW5pdCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJhdG9yKQorICAgICAgICA6IG1f
bnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICB7CisgICAgfQorCisgICAgV2VsbEZvcm1lZFVuaXQo
TWVhc3VyZVVuaXQgbnVtZXJhdG9yLCBNZWFzdXJlVW5pdCBkZW5vbWluYXRvcikKKyAgICAgICAg
OiBtX251bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwgbV9kZW5vbWluYXRvcihkZW5vbWlu
YXRvcikKKyAgICB7CisgICAgfQorCisgICAgTWVhc3VyZVVuaXQgbnVtZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1lcmF0b3I7IH0KKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gZGVub21p
bmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlbm9taW5hdG9yOyB9Citwcml2YXRlOgorICAgIE1l
YXN1cmVVbml0IG1fbnVtZXJhdG9yOworICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBtX2Rlbm9t
aW5hdG9yOworfTsKKworc3RhdGljIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiBpc1dlbGxGb3Jt
ZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZpZXIKKyAg
ICBpZiAoYXV0byB1bml0ID0gaXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIodW5pdElk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQodW5pdC52YWx1ZSgpKTsK
KworICAgIC8vIElmIHRoZSBzdWJzdHJpbmcgIi1wZXItIiBkb2VzIG5vdCBvY2N1ciBleGFjdGx5
IG9uY2UgaW4gdW5pdElkZW50aWZpZXIsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gcGVy
ID0gU3RyaW5nVmlldygiLXBlci0iX3MpOworICAgIGF1dG8gcG9zID0gdW5pdElkZW50aWZpZXIu
ZmluZChwZXIpOworICAgIGlmIChwb3MgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHBvczIgPSB1bml0SWRlbnRpZmllci5maW5kKHBlciwg
cG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBpZiAocG9zMiAhPSBXVEY6Om5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1Nh
bmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJl
dHVybiBmYWxzZS4KKyAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmlu
ZygwLCBwb3MpOworICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9IGlzU2FuY3Rpb25lZFNpbXBsZVVu
aXRJZGVudGlmaWVyKG51bWVyYXRvcik7CisgICAgaWYgKCFudW1lcmF0b3JVbml0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1NhbmN0
aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0
dXJuIGZhbHNlLgorICAgIGF1dG8gZGVub21pbmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJp
bmcocG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IGlzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKTsKKyAgICBpZiAoIWRlbm9t
aW5hdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlh
bGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0xOTEsMjAgKzMyOSwyNSBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOwogICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX251bWJlcmluZ1N5
c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9w
dGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3Jt
YXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNp
bWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0
aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIs
ICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2Ug
aWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJp
bmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5Owor
ICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0g
U3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApA
QCAtMjI5LDYwICszNzIsMjczIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51
bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGN1
cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGN1cnJlbmN5KTsKICAgICB9CiAK
LSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURp
c3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBt
dXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9s
Iik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVu
Y3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hcnJvd1N5bWJvbCIsICJuYW1lIiB9
LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBc
Im5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1ib2wiKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJy
ZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIikKKyAg
ICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAiY29kZSJfcykKICAgICAgICAgICAg
IG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpDb2RlOwotICAgICAgICBlbHNl
IGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCIpCisgICAgICAgIGVsc2UgaWYg
KGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9zKQogICAgICAgICAgICAgbV9jdXJy
ZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDsKLSAgICAgICAgZWxzZSBpZiAo
Y3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAgICAgICAgZWxzZSBpZiAoY3VycmVu
Y3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3MpCisgICAgICAgICAgICBtX2N1cnJl
bmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOworICAgICAgICBlbHNl
IGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUiX3MpCiAgICAgICAgICAgICBtX2N1
cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFtZTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbWlu
aW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJy
ZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGluZyIgfSwgImN1cnJlbmN5U2lnbiBt
dXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2NvdW50aW5nXCIiLCAic3RhbmRhcmQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11
bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICBpZiAobV9zdHlsZSA9
PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAi
c3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6
U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAiYWNjb3Vu
dGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpBY2Nv
dW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1f
c3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICBTdHJp
bmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgT3B0aW9uYWw8V2VsbEZv
cm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICghdW5pdC5pc051bGwoKSkgeworICAg
ICAgICB3ZWxsRm9ybWVkVW5pdCA9IGlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKHVuaXQpOwor
ICAgICAgICBpZiAoIXdlbGxGb3JtZWRVbml0KSB7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInVu
aXQgaXMgbm90IGEgd2VsbC1mb3JtZWQgdW5pdCBpZGVudGlmaWVyIl9zKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJf
cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0
cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVu
aXREaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJu
YXJyb3ciLCAibG9uZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwg
XCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11
bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAg
ICAgIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3Vu
aXREaXNwbGF5ID0gVW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlz
cGxheVN0cmluZyA9PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVu
aXREaXNwbGF5OjpOYXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09
ICJsb25nIl9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25n
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMp
OwotICAgIGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGlt
dW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxz
ZQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11
bUZyYWN0aW9uRGlnaXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6
IDA7CisgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxl
ID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxl
OjpQZXJjZW50KSA/IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGln
aXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgSW50bE5vdGF0aW9u
IG5vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBTdHJpbmcgbm90YXRpb25T
dHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIHsgInN0YW5kYXJkIiwgInNjaWVudGlmaWMi
LCAiZW5naW5lZXJpbmciLCAiY29tcGFjdCIgfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwi
c3RhbmRhcmRcIiwgXCJzY2llbnRpZmljXCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0
XCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwor
ICAgIGlmIChub3RhdGlvblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgIG5vdGF0aW9u
ID0gSW50bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9
PSAic2NpZW50aWZpYyJfcykKKyAgICAgICAgbm90YXRpb24gPSBJbnRsTm90YXRpb246OlNjaWVu
dGlmaWM7CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJpbmcgPT0gImVuZ2luZWVyaW5nIl9zKQor
ICAgICAgICBub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc7CisgICAgZWxzZSBp
ZiAobm90YXRpb25TdHJpbmcgPT0gImNvbXBhY3QiX3MpCisgICAgICAgIG5vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBub3RhdGlvbik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFN0cmluZyBjb21w
YWN0RGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyAic2hvcnQiLCAibG9u
ZyIgfSwgImNvbXBhY3REaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiBvciBcImxvbmdc
IiIsICJzaG9ydCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0K
LSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwg
IW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
dW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVu
c2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlv
bjo6Q29tcGFjdCkgeworICAgICAgICBpZiAoY29tcGFjdERpc3BsYXkgPT0gInNob3J0Il9zKQor
ICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpTaG9ydDsKKyAg
ICAgICAgZWxzZSBpZiAoY29tcGFjdERpc3BsYXkgPT0gImxvbmciX3MpCisgICAgICAgICAgICBt
X2NvbXBhY3REaXNwbGF5ID0gQ29tcGFjdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIFRyaVN0YXRlIHVz
ZUdyb3VwaW5nID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCisgICAgU3RyaW5nIHNpZ25EaXNwbGF5ID0gaW50bFN0cmlu
Z09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJzaWduRGlzcGxheSIpLCB7ICJhdXRvIiwgIm5ldmVyIiwgImFsd2F5cyIsICJleGNlcHRaZXJv
IiB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJh
bHdheXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiLCAiYXV0byIpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHNpZ25EaXNwbGF5ID09ICJhdXRvIl9zKQor
ICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkF1dG87CisgICAgZWxzZSBpZiAo
c2lnbkRpc3BsYXkgPT0gIm5ldmVyIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRp
c3BsYXk6Ok5ldmVyOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJhbHdheXMiX3MpCisg
ICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6QWx3YXlzOworICAgIGVsc2UgaWYg
KHNpZ25EaXNwbGF5ID09ICJleGNlcHRaZXJvIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0g
U2lnbkRpc3BsYXk6OkV4Y2VwdFplcm87CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKworICAgIC8vIE9wdGlvbnMgYXJlIG9idGFpbmVkLiBDb25maWd1cmUgZm9ybWF0
dGVyIGhlcmUuCisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICAvLyBDb25zdHJ1Y3RpbmcgSUNV
IE51bWJlciBTa2VsZXRvbnMgdG8gY29uZmlndXJlIFVOdW1iZXJGb3JtYXR0ZXIuCisgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJn
dWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQKKworICAgIFN0cmluZ0J1aWxk
ZXIgc2tlbGV0b25CdWlsZGVyOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJy
b3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9zdHlsZSkgeworICAgIGNh
c2UgU3R5bGU6OkRlY2ltYWw6CisgICAgICAgIC8vIE5vIHNrZWxldG9uIGlzIG5lZWRlZC4KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXJjZW50IHNjYWxlLzEwMCIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeTogeworICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGN1cnJlbmN5LyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKGN1cnJlbmN5KTsKKworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3Nr
ZWxldG9ucy5tZCN1bml0LXdpZHRoCisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5jeURpc3BsYXkp
IHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtaXNvLWNvZGUiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgorICAg
ICAgICAgICAgLy8gRGVmYXVsdCBvcHRpb24uIERvIG5vdCBzcGVjaWZ5IHVuaXQtd2lkdGguCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5
bWJvbDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13
aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFtZToKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFN0eWxlOjpVbml0OiB7CisgICAgICAg
IC8vIFRoZSBtZWFzdXJlLXVuaXQgc3RlbSB0YWtlcyBvbmUgcmVxdWlyZWQgb3B0aW9uOiB0aGUg
dW5pdCBpZGVudGlmaWVyIG9mIHRoZSB1bml0IHRvIGJlIGZvcm1hdHRlZC4KKyAgICAgICAgLy8g
VGhlIGZ1bGwgdW5pdCBpZGVudGlmaWVyIGlzIHJlcXVpcmVkOiBib3RoIHRoZSB0eXBlIGFuZCB0
aGUgc3VidHlwZSAoZm9yIGV4YW1wbGUsIGxlbmd0aC1tZXRlcikuCisgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtZWFzdXJlLXVuaXQvIik7CisgICAgICAgIGF1dG8gbnVt
ZXJhdG9yVW5pdCA9IHdlbGxGb3JtZWRVbml0LT5udW1lcmF0b3IoKTsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUoKSk7CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJy0nKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1l
cmF0b3JVbml0LnN1YlR5cGUoKSk7CisgICAgICAgIGlmIChhdXRvIGRlbm9taW5hdG9yVW5pdFZh
bHVlID0gd2VsbEZvcm1lZFVuaXQtPmRlbm9taW5hdG9yKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
ZGVub21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUo
KSk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9i
bG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMu
bWQjdW5pdC13aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAg
Y2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3Mv
dXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRo
CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOwor
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2
NykgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5z
dGVhZCBvZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzOyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAg
IHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAn
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3Jt
YXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lv
bgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21w
YWN0Um91bmRpbmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI25vdGF0aW9uCisgICAgc3dpdGNoIChub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0
aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlNj
aWVudGlmaWM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2NpZW50
aWZpYyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJp
bmc6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJpbmci
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAg
ICAgIHN3aXRjaCAobV9jb21wYWN0RGlzcGxheSkgeworICAgICAgICBjYXNlIENvbXBhY3REaXNw
bGF5OjpTaG9ydDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
Y29tcGFjdC1zaG9ydCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcGFj
dERpc3BsYXk6Okxvbmc6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIGNvbXBhY3QtbG9uZyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQjc2lnbi1kaXNwbGF5CisgICAgLy8gQ3VycmVuY3lTaWduJ3MgYWNjb3VudGluZyBp
cyBhIHBhcnQgb2YgU2lnbkRpc3BsYXkgaW4gSUNVLgorICAgIGJvb2wgdXNlQWNjb3VudGluZyA9
IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSAmJiBtX2N1cnJlbmN5U2lnbiA9PSBDdXJyZW5j
eVNpZ246OkFjY291bnRpbmcpOworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAgIGNh
c2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmciKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiBzaWduLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2
ZXI6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1uZXZlciIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgICAg
IGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgaWYg
KHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHNpZ24tYWNjb3VudGluZy1leGNlcHQtemVybyIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tZXhjZXB0LXplcm8iKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9mZiIpOworCisgICAgU3Ry
aW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgZGF0YUxvZ0xu
SWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBtX2xvY2FsZSk7CisgICAgZGF0
YUxvZ0xuSWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBza2VsZXRvbik7Cisg
ICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVu
Rm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygp
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksICZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZv
cm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZWxzZQogICAgIFVOdW1iZXJGb3Jt
YXRTdHlsZSBzdHlsZSA9IFVOVU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKICAg
ICBjYXNlIFN0eWxlOjpEZWNpbWFsOgpAQCAtMjk5LDY1ICs2NTUsODYgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAg
ICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJl
ckZvcm1hdCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lE
aXNwbGF5OjpOYW1lOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKHN0eWxlLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJG
b3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICB1
bnVtX3NldFRleHRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fQ1VSUkVOQ1lf
Q09ERSwgU3RyaW5nVmlldyhtX2N1cnJlbmN5KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgbV9j
dXJyZW5jeS5sZW5ndGgoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVy
Rm9ybWF0Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBp
ZiAoIW1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRp
bmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lO
VEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywg
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251
bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFj
dGlvbkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1
dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRy
dWUpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAg
ICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9T
SUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHVudW1f
c2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1f
dXNlR3JvdXBpbmcpOwogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgp
LCBVTlVNX1JPVU5ESU5HX01PREUsIFVOVU1fUk9VTkRfSEFMRlVQKTsKKyNlbmRpZgogfQogCiAv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRs
TnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
IHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNV
X1VOVU1GKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1m
X29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVu
dW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRl
ZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVm
ZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4i
X3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
QEAgLTM2OCwxMCArNzQ1LDI1IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiBy
YXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVy
czgoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVU5V
TUYpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3Bl
blJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZf
Zm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcu
bGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRl
ZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIEJpZ0ludC4iX3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQp
OwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9y
bWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGEgQmlnSW50LiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwg
U3RyaW5nKGJ1ZmZlcikpOwogfQogCkBAIC0zODQsNiArNzc2LDggQEAgQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4g
InBlcmNlbnQiX3M7CiAgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAi
Y3VycmVuY3kiX3M7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CkBAIC0zOTYsNiArNzkwLDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1i
ZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lE
aXMKICAgICAgICAgcmV0dXJuICJjb2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpT
eW1ib2w6CiAgICAgICAgIHJldHVybiAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAg
ICAgfQpAQCAtNTE1LDIwICs5MTEsMzggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9y
bWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkSXRyID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3Np
dGVyX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3Bl
biBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24g
aXRlcmF0b3IiX3MpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OworI2lmIEhBVkUo
SUNVX1VOVU1GKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRy
PFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVz
dWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9mb3Jt
YXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIu
Z2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJlc3VsdCk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmllbGRQb3Np
dGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyNl
bHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9y
bWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
bnVtYmVyLiJfcyk7CisjZW5kaWYKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJl
c3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuaAppbmRleCA0MzA0YjIyYThjNmE1MTFmNzRlMmJkY2IwNTM4OGQ1YjY1YjczNDc2Li4y
NTUzMDRhNjZiMWI1ZTc3YmI4NDAzODI4OTEyODdmNTU4NTVlMzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yOSwxMCArMjks
MjQgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgog
CisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVU5VTUYpCisjaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9O
VU0gPj0gNjIKKyNkZWZpbmUgSEFWRV9JQ1VfVU5VTUYgMQorI2VuZGlmCisjZW5kaWYKKworI2lm
IEhBVkUoSUNVX1VOVU1GKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24geyBTdGFuZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKK3RlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhK
U0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQs
IEludGxOb3RhdGlvbik7CisKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CkBAIC02Niw2ICs4MCw5IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1BhcnRz
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVk
LCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVs
bHB0cik7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9p
ZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSos
IEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBJbnRsTm90YXRpb24pOworCiBwcml2YXRl
OgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CkBAIC03MywyMiArOTAsMzYgQEAgY2xhc3MgSW50bE51bWJlckZvcm1h
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8
U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNs
YXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAg
ZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1l
IH07Ci0KLSAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBT
dHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworICAg
IGVudW0gY2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJvbCwgTmFy
cm93U3ltYm9sLCBOYW1lIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90
IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKKyAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDog
dWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIENvbXBhY3RE
aXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlz
cGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CiAKICAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwogCiAgICAg
V3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VTlVNRikKKyAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIgeworICAgICAgICB2
b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdHRlciopIGNvbnN0OworICAgIH07CisgICAgc3Ry
dWN0IFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVG
b3JtYXR0ZWROdW1iZXIqKSBjb25zdDsKKyAgICB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7
CisjZWxzZQorICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7CisgICAgICAgIHZvaWQg
b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7CisgICAgfTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0
OworI2VuZGlmCiAKICAgICBTdHJpbmcgbV9sb2NhbGU7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5n
U3lzdGVtOwogICAgIFN0cmluZyBtX2N1cnJlbmN5OworICAgIFN0cmluZyBtX3VuaXQ7CiAgICAg
dW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21p
bmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyB7IDMgfTsKQEAgLTk2LDcgKzEyNywxMiBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVj
aW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKKyAgICBDdXJy
ZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CisgICAgVW5pdERpc3BsYXkgbV91bml0RGlzcGxheTsK
KyAgICBDb21wYWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OworICAgIFNpZ25EaXNwbGF5IG1f
c2lnbkRpc3BsYXk7CiAgICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIEludGxS
b3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMzU4ZTQ5ZGI1OGZmOWM2YzllZjVjZGZlYzZiYzE3NDQ0YjNjYzYxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNl
dE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
bnRsVHlwZSogaW50bE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIHVuc2lnbmVkIG1pbmltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQsIEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
dW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgSlNWYWx1ZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KworICAgIEpTVmFsdWUgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9u
RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAg
ICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisg
ICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIGludGxPYmplY3QtPm1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRp
Z2l0czsKKworICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmlu
ZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBpbnRsT2JqZWN0LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNp
Z25pZmljYW50RGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZp
Y2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25p
ZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
ID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZp
Y2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxPYmplY3Qt
Pm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICBpbnRsT2JqZWN0LT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1T
aWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbWlu
aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9u
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpbnRsT2JqZWN0LT5tX3JvdW5k
aW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNp
Z25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9i
YWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9
IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZh
dWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWlu
aW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVs
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAg
IGludGxPYmplY3QtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgICAgICBpbnRsT2JqZWN0LT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGlt
dW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub3Rh
dGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaW50bE9iamVjdC0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnRsT2JqZWN0LT5tX3JvdW5kaW5nVHlwZSA9IEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgIGludGxPYmplY3QtPm1fbWluaW11bUZy
YWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpbnRsT2Jq
ZWN0LT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggYzQ5OWFkYTE5ZjNhZDRjMmY4MzBh
ZGMzYzUzYjhkNWE2YzFmNTc2Zi4uMzQzYTQ3NDNmZGM0N2Q0NTgwOWIyYjQ4NzZiMmVlMTc5MjE5
MTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTEyNSwzNCArMTI2LDggQEAgdm9pZCBJ
bnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIG1fdHlwZSA9IHR5cGVTdHJpbmcgPT0gIm9yZGluYWwiID8gVHlwZTo6T3JkaW5hbCA6
IFR5cGU6OkNhcmRpbmFsOwogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBp
bnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBzZXROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCAwLCAzLCBJ
bnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0
czsKLQotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAg
IHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3Up
OwotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11
bUZyYWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7
Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+
Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQo
KSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAg
ICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
ID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJ
TUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVz
KSk7CkBAIC0xNjEsMTQgKzEzNiwyMCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6
ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7
Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJ
R05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwotICAgIH0gZWxzZSB7CisgICAgc3dpdGNo
IChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25E
aWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01JTl9JTlRFR0VSX0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElP
Tl9ESUdJVFMsIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9t
YXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZSht
X251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7
CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01J
Tl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAg
ICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05J
RklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0x
OTEsMTEgKzE3MiwxOCBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/
ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNO
dW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIp
LCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1i
ZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOwotICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUo
KSkpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1i
ZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiks
IGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgSlNB
cnJheSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29u
dGlndW91cyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4MmEwZTY5M2EwY2JkMDgyYjIyMGYyNTVkODJhZTc0Yjcx
Li5hMmRjZmY5ZWYyYmUzMTc1MDZkNmY3Yjc5Nzg1M2I2ODIxZTIzZDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUg
PHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CiAKQEAgLTUzLDYgKzUzLDkgQEAgY2xhc3MgSW50bFBs
dXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgREVDTEFS
RV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CisgICAgZnJpZW5kIHZv
aWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUq
LCBKU09iamVjdCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgSW50bE5vdGF0aW9uKTsKKwogICAgIHZv
aWQgaW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVz
LCBKU1ZhbHVlIG9wdGlvbnMpOwogICAgIEpTVmFsdWUgc2VsZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlIHZhbHVlKSBjb25zdDsKICAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KikgY29uc3Q7CkBAIC04MCw4ICs4Myw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxl
cyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21pbmlt
dW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9Owot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgdW5zaWdu
ZWQgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5k
aW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiAgICAgVHlwZSBt
X3R5cGUgeyBUeXBlOjpDYXJkaW5hbCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzEyNjNiNTc1YzRlNDkwYjkxNjE4MjVhMGNmMTY1N2UxMWFi
ZGJhOC4uODQ1NmUzMGJiYWZlZGQ2OTcxYWVhMDYzYzA0OTAxNGVlY2IwNWMwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODAsNiArMTgwLDcgQEAKIAkJ
RTM4RDZFMjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMw
MEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi87IH07CiAJCUUzOTJGQTI3MjJFOTJC
RkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJl
c291cmNlVXNhZ2VDb2NvYS5jcHAgKi87IH07CiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAv
KiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAq
LzsgfTsKKwkJRTNCRTA5QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRTA5QTYyNEE1ODU0
NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovOyB9OwogCQlFNEEwQUQzOTFBOTYyNDU1MDA1
MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICov
OyB9OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2
MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI2MUVEQzcyNDA5
Q0NDMTAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyog
U3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLzsgfTsKQEAgLTczMSw2ICs3MzIsNyBAQAogCQlFMzky
RkEyNjIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlVXNhZ2VDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1Zh
bHVlTWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFs
dWVNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgz
MEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
QkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElDVUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5
MDIxMTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFNjRGMEIyMjgxMzQyODAwMUU1NUI0IC8qIE5vbm1vdmFi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTm9ubW92YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTI3Myw4ICsxMjc1LDggQEAKIAkJCQkwRjcwNzVGMzFGQkY1MzdBMDA0ODlBRjAg
LyogVGltaW5nU2NvcGUuaCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlu
eUxSVUNhY2hlLmggKi8sCiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJT
ZXQuaCAqLywKLQkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRlZFByb2Nl
c3MuaCAqLywKIAkJCQk1MjFDQzZCMzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nl
c3MuY3BwICovLAorCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJv
Y2Vzcy5oICovLAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICov
LAogCQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlF
MzYwQzc2NDIxMjdCODVCMDBDOTBGMEUgLyogVW5hbGlnbmVkQWNjZXNzLmggKi8sCkBAIC0xNDUy
LDYgKzE0NTQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlB
OEE0NzM1MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwICovLAorCQkJCUUzQkUw
OUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLywKIAkJCQk1MkIyMjhDMTI0
NThEQzgyMDA3NTNEOTEgLyogSUNVSGVscGVycy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpY3U7
CkBAIC0xNjc2LDYgKzE2NzksNyBAQAogCQkJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBH
cmVnb3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNEODE1MUE4MjVC
MDA0MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjVCNDRFMjIx
M0Q2MTYwMDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCRTA5
QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0EwNTA5M0YxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTc0Nyw3ICsxNzUxLDYgQEAKIAkJCQlBNUJBMTVGNTE4MjQzNDgw
MDBBODJFNjkgLyogU3RyaW5nSW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEREJG
QTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vz
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3Ry
aW5nVmlld0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQzMThBMUU4QzMwMEQwRDZB
MSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4
MjVCMDA0MTIzRkYgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzY0LDYgKzE3Njcs
NyBAQAogCQkJCTUzMTFCRDVDMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAw
NDg5QUYwIC8qIFRpbWluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyMUNDNkI0MjRB
Mjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkNzFlYjI4MjM1NDllNWQ1ZGEwN2NiYWJhOTRl
OTQ2MTEwMWUyMmQuLmQyMjBlNmE4ODg2N2UxZWYxNDBkMGIwYzQ3ZTA5NTIwNjZkMGJlZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC00OTksNiArNDk5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAg
ICAgdW5pY29kZS9VVEY4Q29udmVyc2lvbi5jcHAKIAogICAgIHVuaWNvZGUvaWN1L0NvbGxhdG9y
SUNVLmNwcAorICAgIHVuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCiApCiAKIHNldChXVEZfUFJJ
VkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAppbmRl
eCBhOTA4ZGYzYmVhNjFmZmMyM2ViZGRiMzQ0Yzc1NmZjMmM4ZTg4Mjc3Li5mN2E0NzlhMGJhMDcx
ZWYwNjg5YTBlMTIzMmZiZWI0NGE1ZDBiNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFs
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC00Nyw3ICs0OCw5IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbCBmaW5hbCB7CiAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwgeyBudWxscHRyIH07CiAgICAgfQogCi0gICAgY29uc3QgY2hh
ciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0
ZXhwciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJz
OyB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQogCiBwcml2YXRlOgogICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykg
OiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmlu
ZGV4IDhiZGM4YjBlZTE5YjMyY2Q1ZjA2ZmZkYzJjYTc3YWUzNWE2MWYzOGQuLmMyMmE4YWUzNDQ2
MWMzYjNjYzgwMmJmY2I1MzAxYTY2NzJiYzllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BU0NJSUxpdGVyYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hh
ci5oPgpAQCAtNjgsNiArNjksNyBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBTdHJp
bmdWaWV3KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3KGNv
bnN0IGNoYXIqKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3
IGVtcHR5KCk7CiAKQEAgLTM1Niw2ICszNTgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIGluaXRp
YWxpemUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgp
OwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhBU0NJSUxpdGVyYWwgc3RyaW5n
KQoreworICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSk7Cit9CisKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwm
IHN0cmluZykKIHsKICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmYzZTEwY2Y0NmY1
OThiMzhmMWIwNDkyNjVmY2NlN2ZlODJjNzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91dmVybnVtLmg+CisKK25hbWVzcGFjZSBXVEYgewor
bmFtZXNwYWNlIElDVSB7CisKK3N0YXRpYyBjb25zdCBVVmVyc2lvbkluZm8mIHZlcnNpb24oKQor
eworICAgIHN0YXRpYyBVVmVyc2lvbkluZm8gdmVyc2lvbnMgeyB9OworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Cisg
ICAgICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9ucyk7CisgICAgfSk7CisgICAgcmV0dXJuIHZlcnNp
b25zOworfQorCit1bnNpZ25lZCBtYWpvclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQo
MCA8IFVfTUFYX1ZFUlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzBdOworfQor
Cit1bnNpZ25lZCBtaW5vclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMSA8IFVfTUFY
X1ZFUlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzFdOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIFdURjo6SUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgK
aW5kZXggNzJhOTQzZTI1YTI0OWJmNTFmODQ0ZDQwY2I3ZDBmODVhNzIyMjkxOS4uMWFlMzEwNGMz
NGQ4NzBiMzY3MjBjZTViMDU4ODZmNjg5ZDhiYmMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUv
aWN1L0lDVUhlbHBlcnMuaApAQCAtMTA3LDcgKzEwNywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNvZGUgY2FsbEJ1
ZmZlcgogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLX0KK25hbWVzcGFjZSBJQ1UgeworCit1bnNp
Z25lZCBtYWpvclZlcnNpb24oKTsKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpOworCit9IC8vIG5h
bWVzcGFjZSBJQ1UKK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5n
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCA0YTEyMTM1M2JiNDE0NTRmODQ4M2M2OTZmZWM3MmIzYjkyOGI5ZDc4Li5iMTEwYzU4MTk3MjVm
NTRkMjRjNTYyZDE0ZmIyZjgzZDkyM2Y0OTEwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI1ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBV
bmlmaWVkIEludGwuTnVtYmVyRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjAtMDYtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBpbmNsdWRlZCBjb3B5IG9mIHN0cmVzcy9sbGludHRydWUuanMgYWNj
aWRlbnRhbGx5LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4
NWNmNGUxNjRiOTRkZjEuLjIwZTVlNTM5OWEzYzFhYTk2N2RlN2E5MGM1ZGI1YTdjNWFjNjY1Mzgg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKQEAgLTI4LDcgKzI4LDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0
ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5EaXNwbGF5TmFt
ZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmll
ZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9E
YXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402853</attachid>
            <date>2020-06-25 22:22:09 -0700</date>
            <delta_ts>2020-06-25 23:20:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200625222208.patch</filename>
            <type>text/plain</type>
            <size>72124</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YmM5OTE0YWRhMzEzMGJlOWQ3ZTMzMzY3Nzk1OThiYTBhYmE0ZmUyLi5jNDViMzQwNmE4MWU4MTlh
ZmQ3NmVmZjM4M2I0ZmNmOWEzZDI3NzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAg
ICAgICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFz
dXJlVW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6aXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIp
OgorICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAg
ICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6bnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2VsbEZvcm1lZFVuaXQ6OmRlbm9taW5hdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6aXNXZWxs
Rm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0
aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChK
U0M6OkludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5oOgorCiAyMDIwLTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYzMDM1KTogc3RyZXNz
L2dldC1wcm90b3R5cGUtb2YuanMgYnJva2VuIG9uIHMzOTB4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQyN2IwMTZiMzkzMDg3
OWVjZWUwNzM0OTIzN2M2NDY0NjVmMDI5OTAuLmYxNDRmZjgxODE1YTI5YjEzZmY1NWQzOWQxNDM4
NzBiMGNjNDM1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDYtMjUgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIFVuaWZpZWQgSW50
bC5OdW1iZXJGb3JtYXQgbWlzc2luZyBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nVmlldzo6U3RyaW5nVmlldyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJh
bC5oLgorICAgICAgICAoV1RGOjpJQ1U6OnZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1h
am9yVmVyc2lvbik6CisgICAgICAgIChXVEY6OklDVTo6bWlub3JWZXJzaW9uKToKKyAgICAgICAg
KiB3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oOgorCiAyMDIwLTA2LTI1ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcgdGVtcGxhdGVkIHN0cmlu
ZyB0eXBlIHRvIGhlbHAgd3JpdGUgbW9yZSBpZGlvbWF0aWMgcGFyc2luZyBjb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJjNmUwNGVhYjgzODhjMjI4MGRhNTA4
NDNhNjNiZGQuLjBiNWRiNWMyOTlkYmYzZjE1ODM3NTI4MGFhM2UwYWNjZjFhMzk3YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzg5LDYgKzE3ODksNyBAQAogCQlFMzIwMUMx
RTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhEMDYwQzFGOEU4MTQxMDA2NDlD
RjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyMkU1QTMxREE2NDQzOTAwNkU3NzA5IC8qIERGR1Nu
aXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggKi87IH07
CiAJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBNTFEQTY0NEE0
MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovOyB9OworCQlFMzIzMTE2OTI0QTFEQzM1
MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovOyB9OwogCQlFMzI1OTU2NDIxRkRBMkM5MDA4RURD
OUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBH
bG9iYWxEYXRhSW5saW5lcy5oICovOyB9OwogCQlFMzI1QTM2MDIyMjExNTkwMDA3MzQ5QTEgLyog
U3RyaW5nUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlw
ZUlubGluZXMuaCAqLzsgfTsKIAkJRTMyODJCQkIxRkU5MzBBRjAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5NDQsNiArNDk0NSw3IEBACiAJ
CUUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGRmZy9E
RkdTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjJFNUE0
MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuY3BwOyBwYXRoID0gZnRsL0ZU
TFNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVB
NTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1zLmg7IHBhdGggPSBmdGwvRlRMU25pcHBl
dFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzIzMTE2ODI0QTFEQzJG
MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
NTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVBMzVGMjIyMTE1OEEwMDczNDlBMSAvKiBT
dHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNkM0OTYxRUNCRUY1NzAw
QTlBOTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3Miw2
ICs3Mjc0LDcgQEAKIAkJCQlBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5oICovLAogCQkJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzIzMTE2ODI0QTFEQzJGMDA2
OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLywKIAkJCQlBMUQ3OTJGQTFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTFE
NzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLywK
IAkJCQlBMTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8sCkBAIC05
NzU1LDYgKzk3NTgsNyBAQAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1
ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYzYWIxNzk5
MjJlYmE4MzhhYTI5MzguLjExZDQzY2VlOThkOTRhZGVmYWZiZWQxMjgwNTE0OWI3ZTNiNTUzNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgog
CiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0Myw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogY29uc3Rl
eHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworY29u
c3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51bWJlckZvcm1h
dEZpZWxkIHsKQEAgLTQ5LDExICs1MSwyNSBAQCBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxk
IHsKICAgICBzaXplX3Qgc2l6ZTsKIH07CiAKKyNpZiBIQVZFKElDVV9VTlVNRikKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdHRlciogbnVtYmVyRm9ybWF0dGVyKSBjb25zdAoreworICAgIGlmIChudW1iZXJGb3Jt
YXR0ZXIpCisgICAgICAgIHVudW1mX2Nsb3NlKG51bWJlckZvcm1hdHRlcik7Cit9CisKK3ZvaWQg
SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUZv
cm1hdHRlZE51bWJlciogZm9ybWF0dGVkTnVtYmVyKSBjb25zdAoreworICAgIGlmIChmb3JtYXR0
ZWROdW1iZXIpCisgICAgICAgIHVudW1mX2Nsb3NlUmVzdWx0KGZvcm1hdHRlZE51bWJlcik7Cit9
CisjZWxzZQogdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3Bl
cmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0CiB7CiAgICAgaWYgKG51
bWJlckZvcm1hdCkKICAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwogfQorI2VuZGlm
CiAKIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTE5LDcgKzEzNSw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKICAgICAvLyAx
MS4xLjEgVGhlIGFic3RyYWN0IG9wZXJhdGlvbiBDdXJyZW5jeURpZ2l0cyAoY3VycmVuY3kpCiAg
ICAgLy8gIklmIHRoZSBJU08gNDIxNyBjdXJyZW5jeSBhbmQgZnVuZHMgY29kZSBsaXN0IGNvbnRh
aW5zIGN1cnJlbmN5IGFzIGFuIGFscGhhYmV0aWMgY29kZSwKICAgICAvLyB0aGVuIHJldHVybiB0
aGUgbWlub3IgdW5pdCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW5jeSBmcm9tIHRo
ZSBsaXN0OyBlbHNlIHJldHVybiAyLgotICAgIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWdu
ZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpw
YWlyPGNvbnN0IGNoYXIqLCB1bnNpZ25lZD4gY3VycmVuY3lNaW5vclVuaXRzW10gPSB7CiAgICAg
ICAgIHsgIkJIRCIsIDMgfSwKICAgICAgICAgeyAiQklGIiwgMCB9LAogICAgICAgICB7ICJCWVIi
LCAwIH0sCkBAIC0xNTMsNiArMTY5LDEzMyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJl
bmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgcmV0dXJuIDI7CiB9CiAKKy8v
IENyZWF0ZSBNZWFzdXJlVW5pdCBsaWtlIElDVTRKLgorY2xhc3MgTWVhc3VyZVVuaXQgeworcHVi
bGljOgorICAgIGNvbnN0ZXhwciBNZWFzdXJlVW5pdChBU0NJSUxpdGVyYWwgdHlwZSwgQVNDSUlM
aXRlcmFsIHN1YlR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9zdWJU
eXBlKHN1YlR5cGUpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHN1
YlR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N1YlR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBBU0NJ
SUxpdGVyYWwgbV90eXBlOworICAgIEFTQ0lJTGl0ZXJhbCBtX3N1YlR5cGU7Cit9OworCitzdGF0
aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGlzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVy
KFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWFz
dXJlVW5pdCBzaW1wbGVVbml0c1tdID0geworICAgICAgICB7ICJhcmVhIl9zLCAiYWNyZSJfcyB9
LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJieXRlIl9zIH0sCisgICAgICAgIHsgInRlbXBlcmF0dXJlIl9zLCAiY2Vsc2l1cyJfcyB9
LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJjZW50aW1ldGVyIl9zIH0sCisgICAgICAgIHsgImR1
cmF0aW9uIl9zLCAiZGF5Il9zIH0sCisgICAgICAgIHsgImFuZ2xlIl9zLCAiZGVncmVlIl9zIH0s
CisgICAgICAgIHsgInRlbXBlcmF0dXJlIl9zLCAiZmFocmVuaGVpdCJfcyB9LAorICAgICAgICB7
ICJ2b2x1bWUiX3MsICJmbHVpZC1vdW5jZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJm
b290Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImdhbGxvbiJfcyB9LAorICAgICAgICB7
ICJkaWdpdGFsIl9zLCAiZ2lnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiZ2ln
YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgImdyYW0iX3MgfSwKKyAgICAgICAgeyAi
YXJlYSJfcywgImhlY3RhcmUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJob3VyIl9z
IH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImluY2giX3MgfSwKKyAgICAgICAgeyAiZGlnaXRh
bCJfcywgImtpbG9iaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImtpbG9ieXRlIl9z
IH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJraWxvZ3JhbSJfcyB9LAorICAgICAgICB7ICJsZW5n
dGgiX3MsICJraWxvbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAibGl0ZXIiX3Mg
fSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgIm1lZ2FiaXQiX3MgfSwKKyAgICAgICAgeyAiZGln
aXRhbCJfcywgIm1lZ2FieXRlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1ldGVyIl9z
IH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsZS1zY2FuZGluYXZpYW4iX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAibWls
bGlsaXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxsaW1ldGVyIl9zIH0sCisg
ICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWlsbGlzZWNvbmQiX3MgfSwKKyAgICAgICAgeyAiZHVy
YXRpb24iX3MsICJtaW51dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJtb250aCJf
cyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAib3VuY2UiX3MgfSwKKyAgICAgICAgeyAiY29uY2Vu
dHIiX3MsICJwZXJjZW50Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJwZXRhYnl0ZSJf
cyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAicG91bmQiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRp
b24iX3MsICJzZWNvbmQiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInN0b25lIl9zIH0sCisg
ICAgICAgIHsgImRpZ2l0YWwiX3MsICJ0ZXJhYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJ0ZXJhYnl0ZSJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIndlZWsiX3MgfSwK
KyAgICAgICAgeyAibGVuZ3RoIl9zLCAieWFyZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJf
cywgInllYXIiX3MgfSwKKyAgICB9OworCisgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6bG93ZXJf
Ym91bmQoc3RkOjpiZWdpbihzaW1wbGVVbml0cyksIHN0ZDo6ZW5kKHNpbXBsZVVuaXRzKSwgdW5p
dElkZW50aWZpZXIsCisgICAgICAgIFtdIChjb25zdCBNZWFzdXJlVW5pdCYgdW5pdCwgY29uc3Qg
U3RyaW5nVmlldyYgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmICh1bml0SWRlbnRp
Zmllci5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21w
YXJlKHVuaXQuc3ViVHlwZSgpLmNoYXJhY3RlcnMoKSwgdW5pdC5zdWJUeXBlKCkubGVuZ3RoKCks
IHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0aCgpKSA8
IDA7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlKHVuaXQuc3ViVHlw
ZSgpLmNoYXJhY3RlcnMoKSwgdW5pdC5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVy
LmNoYXJhY3RlcnMxNigpLCB1bml0SWRlbnRpZmllci5sZW5ndGgoKSkgPCAwOworICAgICAgICB9
KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gc3RkOjplbmQoc2ltcGxlVW5pdHMpKSB7CisgICAgICAg
IGlmIChXVEY6OmNvZGVQb2ludENvbXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFyYWN0ZXJz
KCksIGl0ZXJhdG9yLT5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3Rl
cnM4KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0aCgpKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJu
ICppdGVyYXRvcjsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworY2xhc3Mg
V2VsbEZvcm1lZFVuaXQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlbGxGb3JtZWRVbml0KE1l
YXN1cmVVbml0IG51bWVyYXRvcikKKyAgICAgICAgOiBtX251bWVyYXRvcihudW1lcmF0b3IpCisg
ICAgeworICAgIH0KKworICAgIFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0IG51bWVyYXRvciwg
TWVhc3VyZVVuaXQgZGVub21pbmF0b3IpCisgICAgICAgIDogbV9udW1lcmF0b3IobnVtZXJhdG9y
KQorICAgICAgICAsIG1fZGVub21pbmF0b3IoZGVub21pbmF0b3IpCisgICAgeworICAgIH0KKwor
ICAgIE1lYXN1cmVVbml0IG51bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtZXJhdG9yOyB9
CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9kZW5vbWluYXRvcjsgfQorcHJpdmF0ZToKKyAgICBNZWFzdXJlVW5pdCBtX251bWVyYXRvcjsK
KyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gbV9kZW5vbWluYXRvcjsKK307CisKK3N0YXRpYyBP
cHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gaXNXZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5n
VmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVudGlmaWVyCisgICAgaWYgKGF1dG8gdW5pdCA9IGlzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVuaXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0
dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUoKSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3Ry
aW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhhY3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVy
LCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9z
KTsKKyAgICBhdXRvIHBvcyA9IHVuaXRJZGVudGlmaWVyLmZpbmQocGVyKTsKKyAgICBpZiAocG9z
ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byBwb3MyID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7Cisg
ICAgaWYgKHBvczIgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50
aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBu
dW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIG51
bWVyYXRvclVuaXQgPSBpc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3Ip
OworICAgIGlmICghbnVtZXJhdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZp
ZXIoZGVub21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIGRl
bm9taW5hdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvcyArIHBlci5sZW5ndGgoKSk7
CisgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBpc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRp
ZmllcihkZW5vbWluYXRvcik7CisgICAgaWYgKCFkZW5vbWluYXRvclVuaXQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9y
VW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7Cit9CisKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQKIHZvaWQg
SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewpA
QCAtMTkxLDIwICszMzQsMjUgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbG9j
YWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgbV9udW1iZXJpbmdTeXN0ZW0gPSByZXN1bHQuZ2V0KCJudSJf
cyk7CiAKLSAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwiLCAicGVy
Y2VudCIsICJjdXJyZW5jeSIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBc
InBlcmNlbnRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgImRlY2ltYWwiKTsKKyAgICAvLyBTZXROdW1i
ZXJGb3JtYXRVbml0T3B0aW9ucyhpbnRsT2JqZWN0LCBvcHRpb25zKQorICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtc2V0bnVtYmVyZm9ybWF0dW5pdG9wdGlvbnMKKworICAgIFN0
cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJl
bmN5IiwgInVuaXQiIH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJj
ZW50XCIsIFwiY3VycmVuY3lcIiwgb3IgXCJ1bml0XCIiLCAiZGVjaW1hbCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKHN0eWxlU3RyaW5nID09ICJk
ZWNpbWFsIikKKyAgICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiX3MpCiAgICAgICAgIG1f
c3R5bGUgPSBTdHlsZTo6RGVjaW1hbDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAicGVy
Y2VudCIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInBlcmNlbnQiX3MpCiAgICAgICAg
IG1fc3R5bGUgPSBTdHlsZTo6UGVyY2VudDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAi
Y3VycmVuY3kiKQorICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSJfcykKICAg
ICAgICAgbV9zdHlsZSA9IFN0eWxlOjpDdXJyZW5jeTsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmlu
ZyA9PSAidW5pdCJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpVbml0OwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTIxMiw3ICszNjAsNyBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICBpZiAoY3VycmVuY3ku
bGVuZ3RoKCkgIT0gMyB8fCAhY3VycmVuY3kuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJ
QWxwaGE+KCkpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2Vs
bC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJy
ZW5jeSBjb2RlIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTIyOSw2MCArMzc3LDI3MiBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1i
ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjdXJy
ZW5jeURpZ2l0cyA9IGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjdXJyZW5jeSk7CiAgICAgfQogCi0g
ICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNw
bGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hbWUiIH0sICJjdXJyZW5jeURpc3BsYXkgbXVz
dCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5bWJvbCIp
OworICAgIFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5
RGlzcGxheSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYXJyb3dTeW1ib2wiLCAibmFtZSIgfSwg
ImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwgXCJu
YXJyb3dTeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVu
Y3kpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAiY29kZSIpCisgICAg
ICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNvZGUiX3MpCiAgICAgICAgICAgICBt
X2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6Q29kZTsKLSAgICAgICAgZWxzZSBp
ZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wiKQorICAgICAgICBlbHNlIGlmIChj
dXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCJfcykKICAgICAgICAgICAgIG1fY3VycmVu
Y3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w7Ci0gICAgICAgIGVsc2UgaWYgKGN1
cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5
RGlzcGxheVN0cmluZyA9PSAibmFycm93U3ltYm9sIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5j
eURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDsKKyAgICAgICAgZWxzZSBp
ZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIl9zKQogICAgICAgICAgICAgbV9jdXJy
ZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1pbmlt
dW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAy
MSwgMSk7CisgICAgU3RyaW5nIGN1cnJlbmN5U2lnblN0cmluZyA9IGludGxTdHJpbmdPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVu
Y3lTaWduIiksIHsgInN0YW5kYXJkIiwgImFjY291bnRpbmciIH0sICJjdXJyZW5jeVNpZ24gbXVz
dCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNjb3VudGluZ1wiIiwgInN0YW5kYXJkIik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1J
bnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisgICAgaWYgKG1fc3R5bGUgPT0g
U3R5bGU6OkN1cnJlbmN5KSB7CisgICAgICAgIGlmIChjdXJyZW5jeVNpZ25TdHJpbmcgPT0gInN0
YW5kYXJkIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNpZ246OlN0
YW5kYXJkOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeVNpZ25TdHJpbmcgPT0gImFjY291bnRp
bmciX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6QWNjb3Vu
dGluZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0
eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgU3RyaW5n
IHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIE9wdGlvbmFsPFdlbGxGb3Jt
ZWRVbml0PiB3ZWxsRm9ybWVkVW5pdDsKKyAgICBpZiAoIXVuaXQuaXNOdWxsKCkpIHsKKyAgICAg
ICAgd2VsbEZvcm1lZFVuaXQgPSBpc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllcih1bml0KTsKKyAg
ICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRl
bnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV91
bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6
VW5pdCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ1bml0IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
c0RlZmF1bHQpOworICAgIFN0cmluZyB1bml0RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5p
dERpc3BsYXkiKSwgeyAic2hvcnQiLCAibmFycm93IiwgImxvbmciIH0sICJ1bml0RGlzcGxheSBt
dXN0IGJlIGVpdGhlciBcInNob3J0XCIsIFwibmFycm93XCIsIG9yIFwibG9uZ1wiIiwgInNob3J0
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmlt
dW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobV9zdHls
ZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gInNo
b3J0Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpTaG9ydDsK
KyAgICAgICAgZWxzZSBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAg
ICAgICAgIG1fdW5pdERpc3BsYXkgPSBVbml0RGlzcGxheTo6TmFycm93OworICAgICAgICBlbHNl
IGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAibG9uZyJfcykKKyAgICAgICAgICAgIG1fdW5pdERp
c3BsYXkgPSBVbml0RGlzcGxheTo6TG9uZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdDsKLSAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpCi0gICAg
ICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rp
b25EaWdpdHMsIGN1cnJlbmN5RGlnaXRzKTsKLSAgICBlbHNlIGlmIChtX3N0eWxlID09IFN0eWxl
OjpQZXJjZW50KQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gbWluaW11
bUZyYWN0aW9uRGlnaXRzOwotICAgIGVsc2UKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOworICAgIHVuc2ln
bmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3Vy
cmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAwOworICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lE
aWdpdHMgOiAobV9zdHlsZSA9PSBTdHlsZTo6UGVyY2VudCkgPyAwIDogMzsKIAotICAgIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGln
aXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQpOworICAgIFN0cmluZyBub3RhdGlvblN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24i
KSwgeyAic3RhbmRhcmQiLCAic2NpZW50aWZpYyIsICJlbmdpbmVlcmluZyIsICJjb21wYWN0IiB9
LCAibm90YXRpb24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiLCBcInNjaWVudGlmaWNcIiwg
XCJlbmdpbmVlcmluZ1wiLCBvciBcImNvbXBhY3RcIiIsICJzdGFuZGFyZCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJz
dGFuZGFyZCJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U3RhbmRhcmQ7
CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJpbmcgPT0gInNjaWVudGlmaWMiX3MpCisgICAgICAg
IG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM7CisgICAgZWxzZSBpZiAobm90
YXRpb25TdHJpbmcgPT0gImVuZ2luZWVyaW5nIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpFbmdpbmVlcmluZzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAi
Y29tcGFjdCJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6Q29tcGFjdDsK
KyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgSlNWYWx1ZSBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7
CisgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0
aW9ucywgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgbV9ub3RhdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKIAotICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRp
b25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11
bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFN0cmluZyBjb21wYWN0RGlzcGxheSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyAic2hvcnQiLCAibG9uZyIgfSwgImNvbXBhY3REaXNw
bGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiBvciBcImxvbmdcIiIsICJzaG9ydCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBpZiAoIW1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwg
MjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAg
ICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsK
LSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgaWYgKG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7Cisg
ICAgICAgIGlmIChjb21wYWN0RGlzcGxheSA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX2Nv
bXBhY3REaXNwbGF5ID0gQ29tcGFjdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmIChj
b21wYWN0RGlzcGxheSA9PSAibG9uZyJfcykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkg
PSBDb21wYWN0RGlzcGxheTo6TG9uZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRs
Qm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFs
c2U7CiAKKyAgICBTdHJpbmcgc2lnbkRpc3BsYXkgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5Iiks
IHsgImF1dG8iLCAibmV2ZXIiLCAiYWx3YXlzIiwgImV4Y2VwdFplcm8iIH0sICJzaWduRGlzcGxh
eSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4
Y2VwdFplcm9cIiIsICJhdXRvIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBpZiAoc2lnbkRpc3BsYXkgPT0gImF1dG8iX3MpCisgICAgICAgIG1fc2lnbkRp
c3BsYXkgPSBTaWduRGlzcGxheTo6QXV0bzsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAi
bmV2ZXIiX3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6TmV2ZXI7Cisg
ICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0gImFsd2F5cyJfcykKKyAgICAgICAgbV9zaWduRGlz
cGxheSA9IFNpZ25EaXNwbGF5OjpBbHdheXM7CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0g
ImV4Y2VwdFplcm8iX3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6RXhj
ZXB0WmVybzsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAg
Ly8gT3B0aW9ucyBhcmUgb2J0YWluZWQuIENvbmZpZ3VyZSBmb3JtYXR0ZXIgaGVyZS4KKworI2lm
IEhBVkUoSUNVX1VOVU1GKQorICAgIC8vIENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9u
cyB0byBjb25maWd1cmUgVU51bWJlckZvcm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZAorCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxk
ZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFs
Zi11cCIpOworCisgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1h
bDoKKyAgICAgICAgLy8gTm8gc2tlbGV0b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0eWxlOjpQZXJjZW50OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5
bGU6OkN1cnJlbmN5OiB7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
Y3VycmVuY3kvIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOwor
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQt
d2lkdGgKKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6Q29kZToKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZh
dWx0IG9wdGlvbi4gRG8gbm90IHNwZWNpZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1
bGwtbmFtZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgU3R5bGU6OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUt
dW5pdCBzdGVtIHRha2VzIG9uZSByZXF1aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIg
b2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlk
ZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJvdGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3Ig
ZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjdW5pdAorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2Vs
bEZvcm1lZFVuaXQtPm51bWVyYXRvcigpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KG51bWVyYXRvclVuaXQudHlwZSgpKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
LScpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG51bWVyYXRvclVuaXQuc3ViVHlw
ZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVk
VW5pdC0+ZGVub21pbmF0b3IoKSkgeworICAgICAgICAgICAgYXV0byBkZW5vbWluYXRvclVuaXQg
PSBkZW5vbWluYXRvclVuaXRWYWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBwZXItbWVhc3VyZS11bml0LyIpOworICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZChkZW5vbWluYXRvclVuaXQudHlwZSgpKTsKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy0nKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnN1YlR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3Mv
dXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN1bml0LXdpZHRoCisg
ICAgICAgIHN3aXRjaCAobV91bml0RGlzcGxheSkgeworICAgICAgICBjYXNlIFVuaXREaXNwbGF5
OjpTaG9ydDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5p
dC13aWR0aC1zaG9ydCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5pdERp
c3BsYXk6Ok5hcnJvdzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgdW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFVuaXREaXNwbGF5OjpMb25nOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ludGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGludGVnZXItd2lkdGgvIik7CisgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3KSA/ICcqJyA6ICcrJyk7
IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworCisgICAgc3dpdGNoIChtX3JvdW5k
aW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rp
b24tcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
IycpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCNzaWduaWZpY2FudC1kaWdpdHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAg
ICAgICAgLy8gRG8gbm90IHNldCBhbnl0aGluZy4KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2Nz
L3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjbm90YXRpb24KKyAg
ICBzd2l0Y2ggKG1fbm90YXRpb24pIHsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNjaWVudGlmaWMiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGVuZ2luZWVyaW5nIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICBzd2l0Y2ggKG1f
Y29tcGFjdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6Cisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpMb25n
OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LWxv
bmciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ24t
ZGlzcGxheQorICAgIC8vIEN1cnJlbmN5U2lnbidzIGFjY291bnRpbmcgaXMgYSBwYXJ0IG9mIFNp
Z25EaXNwbGF5IGluIElDVS4KKyAgICBib29sIHVzZUFjY291bnRpbmcgPSAobV9zdHlsZSA9PSBT
dHlsZTo6Q3VycmVuY3kgJiYgbV9jdXJyZW5jeVNpZ24gPT0gQ3VycmVuY3lTaWduOjpBY2NvdW50
aW5nKTsKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5
OjpBdXRvOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hdXRvIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tbmV2ZXIiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICBpZiAodXNlQWNjb3Vu
dGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1h
Y2NvdW50aW5nLWFsd2F5cyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWx3YXlzIik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5n
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291
bnRpbmctZXhjZXB0LXplcm8iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmICghbV91c2VHcm91cGluZykKKyAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBncm91cC1vZmYiKTsKKworICAgIFN0cmluZyBza2VsZXRvbiA9
IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOworICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJG
b3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgbV9sb2NhbGUpOworICAgIGRhdGFMb2dMbklmKEludGxO
dW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tlbGV0b24pOworICAgIFN0cmluZ1ZpZXcg
c2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9y
bWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5k
TG9jYWxlKHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSwgc2tlbGV0
b25WaWV3Lmxlbmd0aCgpLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVzKSk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUg
PSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6
RGVjaW1hbDoKQEAgLTI5OSw2NSArNjU5LDg2IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgICAgICBzdHlsZSA9
IFVOVU1fQ1VSUkVOQ1k7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5j
eURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToK
ICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJG
b3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8
VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihzdHlsZSwgbnVs
bHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKICAgICAgICAgdW51bV9zZXRUZXh0QXR0
cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NPREUsIFN0cmluZ1Zp
ZXcobV9jdXJyZW5jeSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3VycmVuY3kubGVuZ3Ro
KCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlh
bGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cykgeworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwot
ICAgIH0gZWxzZSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9y
bWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKICAgICAgICAg
dW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklD
QU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElH
SVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZSht
X251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsK
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElO
R19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3Jt
YXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1m
X3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyNlbHNlCisg
ICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCks
IHZhbHVlLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0zNjgsMTAgKzc0
OSwyNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgYXV0byogcmF3U3RyaW5nID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpOwogCiAgICAg
VmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VOVU1GKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERlY2ltYWwo
bV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
IGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERlY2ltYWwsIG1f
bnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLCBu
dWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0lu
dC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIp
KTsKIH0KIApAQCAtMzg0LDYgKzc4MCw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJjZW50Il9zOwog
ICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOwor
ICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OwpAQCAtMzk2LDYgKzc5NCw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJy
ZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAgICAgICAgIHJl
dHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgogICAgICAg
ICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3lt
Ym9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0KQEAgLTQwMyw2
ICs4MDMsNzYgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxh
eVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlv
blN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgc3dpdGNoIChub3RhdGlvbikg
eworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICAgICAgcmV0
dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoK
KyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6
Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lT
aWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikgeworICAgIGNh
c2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFuZGFyZCJfczsK
KyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzoKKyAgICAgICAgcmV0dXJuICJhY2Nv
dW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK3sKKyAgICBzd2l0
Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAg
IHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93OgorICAgICAg
ICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25nOgorICAgICAg
ICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1i
ZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNvbXBhY3REaXNw
bGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKKyAgICBjYXNlIENvbXBhY3RE
aXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIENvbXBh
Y3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30K
KworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25E
aXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkpIHsKKyAgICBj
YXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2Fz
ZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHJldHVybiAibmV2ZXIiX3M7CisgICAgY2Fz
ZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKKyAgICBj
YXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8i
X3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRs
Lm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVjdCogSW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiB7CkBAIC00MTQsMTYgKzg4NCwyNiBAQCBKU09iamVjdCogSW50bE51bWJlckZvcm1h
dDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgbV9jdXJyZW5jeSkpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeURpc3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3Bs
YXkpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImN1cnJlbmN5U2lnbiIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5
U2lnblN0cmluZyhtX2N1cnJlbmN5U2lnbikpKTsKICAgICB9CiAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMi
KSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0
cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRp
Z2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBBU1NFUlQobV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMi
KSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9u
RGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRp
bmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGlu
ZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsKKyAgICBpZiAobV9ub3RhdGlv
biA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsK
KyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
aWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1f
c2lnbkRpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTUxNSwyMCArOTk1
LDM4IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3Jt
YXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZh
bHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0
byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmll
bGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRl
cmF0b3IiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAg
IFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICBBU1NF
UlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBh
dXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBV
Rm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9y
bWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmlu
ZywgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgIHVudW1mX3Jlc3VsdEdldEFsbEZpZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgZmllbGRJdHIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisjZWxzZQorICAgIEFTU0VSVChtX251
bWJlckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVu
dW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJl
c3VsdCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2VuZGlm
CiAKICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNDMwNGIy
MmE4YzZhNTExZjc0ZTJiZGNiMDUzODhkNWI2NWI3MzQ3Ni4uM2I4MDhmODViODE2ZmJiNDQxZmE5
OTk0M2ZmNDQ2YWE1NTI3NzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMjksMTAgKzI5LDI0IEBACiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KIAorI2lmICFkZWZpbmVkKEhBVkVf
SUNVX1VOVU1GKQorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDYyCisjZGVmaW5lIEhB
VkVfSUNVX1VOVU1GIDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyNp
bmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogCitlbnVtIGNsYXNzIEludGxSb3VuZGlu
Z1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21w
YWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bE5vdGF0aW9uIHsgU3RhbmRhcmQsIFNjaWVu
dGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRs
VHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBJbnRsTm90YXRpb24pOworCiBj
bGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwpAQCAtNjYsNiArODAs
MTEgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9uSXRl
cmF0b3IqLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIEludGxOb3RhdGlvbik7CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5v
dGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbik7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAg
LTczLDIyICs5Miw0MCBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEo
Y29uc3QgU3RyaW5nJiwgc2l6ZV90KTsKIAotICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90
IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3kgfTsKLSAgICBlbnVtIGNsYXNzIEN1cnJlbmN5
RGlzcGxheSA6IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2wsIE5hbWUgfTsKLQotICAgIHN0cnVjdCBV
TnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9y
bWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERl
Y2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5LCBVbml0IH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5j
eURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsK
KyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3Vu
dGluZyB9OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5h
cnJvdywgTG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsg
U2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1
dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lE
aXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBj
dXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmll
cjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7CisjaWYgSEFWRShJQ1VfVU5VTUYpCisg
ICAgc3RydWN0IFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRv
cigpKFVOdW1iZXJGb3JtYXR0ZXIqKSBjb25zdDsKKyAgICB9OworICAgIHN0cnVjdCBVRm9ybWF0
dGVkTnVtYmVyRGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRm9ybWF0dGVkTnVt
YmVyKikgY29uc3Q7CisgICAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRl
ciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2Vsc2UKKyAg
ICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCko
VU51bWJlckZvcm1hdCopIGNvbnN0OworICAgIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1i
ZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNlbmRpZgog
CiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKICAg
ICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcgbV91bml0OwogICAgIHVuc2lnbmVkIG1f
bWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAz
IH07CkBAIC05Niw3ICsxMzMsMTMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAg
ICBDdXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CisgICAgQ3VycmVuY3lTaWduIG1f
Y3VycmVuY3lTaWduOworICAgIFVuaXREaXNwbGF5IG1fdW5pdERpc3BsYXk7CisgICAgQ29tcGFj
dERpc3BsYXkgbV9jb21wYWN0RGlzcGxheTsKKyAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7
IEludGxOb3RhdGlvbjo6U3RhbmRhcmQgfTsKKyAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5
OwogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBl
IG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM1OGU0OWRi
NThmZjljNmM5ZWY1Y2RmZWM2YmMxNzQ0NGIzY2M2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTAs
MCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDICB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgordm9pZCBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGlu
dGxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90
YXRpb24gbm90YXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVuc2lnbmVkIG1p
bmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAx
LCAyMSwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IEpTVmFsdWUgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRz
IikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1Zh
bHVlIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUg
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpbnRsT2Jq
ZWN0LT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAg
ICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1h
eGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50
bE9iamVjdC0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERp
Z2l0czsKKyAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERl
ZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0
cyIpLCAxLCAyMSwgMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZh
dWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMi
KSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBpbnRsT2JqZWN0LT5tX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgaW50
bE9iamVjdC0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlv
bkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bE9iamVjdC0+bV9yb3VuZGluZ1R5cGUgPSBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAg
IHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVhbERlZmF1bHQgPSBzdGQ6Om1heCht
aW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAg
ICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVhbERlZmF1bHQpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBpbnRsT2JqZWN0
LT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAg
ICAgaW50bE9iamVjdC0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25E
aWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0gSW50
bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxPYmplY3QtPm1fcm91bmRpbmdUeXBl
ID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaW50bE9iamVjdC0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czsKKyAgICBpbnRsT2JqZWN0LT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bE9iamVjdC0+bV9tYXhp
bXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGM0OTlhZGExOWYzYWQ0YzJmODMwYWRjM2M1M2I4ZDVh
NmMxZjU3NmYuLjM0M2E0NzQzZmRjNDdkNDU4MDliMmI0ODc2YjJlZTE3OTIxOTExZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxQbHVy
YWxSdWxlcy5oIgogCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNs
dWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCkBAIC0xMjUsMzQgKzEyNiw4IEBAIHZvaWQgSW50bFBsdXJhbFJ1
bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBtX3R5
cGUgPSB0eXBlU3RyaW5nID09ICJvcmRpbmFsIiA/IFR5cGU6Ok9yZGluYWwgOiBUeXBlOjpDYXJk
aW5hbDsKIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgc2V0TnVtYmVyRm9ybWF0RGln
aXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9u
OjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7Ci0KLSAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gMDsKLSAgICB1bnNpZ25lZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIp
LCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1p
bmltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0
c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRp
Z2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgSlNW
YWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIEpT
VmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGln
aXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBp
ZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5zaWdu
ZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBp
bnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9y
bWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0
ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwpAQCAtMTYx
LDE0ICsxMzYsMjAgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxl
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdOSUZJQ0FOVF9E
SUdJVFNfVVNFRCwgdHJ1ZSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9y
bWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzLnZhbHVlKCkpOwotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICB9IGVsc2UgeworICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgogICAg
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5U
RUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJEaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBt
X21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFDVElPTl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOworICAgICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNB
TlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJ
VFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTkxLDExICsxNzIs
MTggQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUp
KTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyAib3JkaW5hbCJf
cyA6ICJjYXJkaW5hbCJfcykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWlu
aW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIo
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMpIHsKLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpKTsKLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRz
IiksIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpKTsKKyAgICBz
d2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFj
dGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11
bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlciht
X21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNp
Z25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEpTQXJyYXkqIGNhdGVn
b3JpZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgK
aW5kZXggYjAxNWZlODJhMGU2OTNhMGNiZDA4MmIyMjBmMjU1ZDgyYWU3NGI3MS4uYTJkY2ZmOWVm
MmJlMzE3NTA2ZDZmN2I3OTc4NTNiNjgyMWUyM2Q2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vw
bHVyYWxydWxlcy5oPgogCkBAIC01Myw2ICs1Myw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJl
ckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3Qq
LCB1bnNpZ25lZCwgdW5zaWduZWQsIEludGxOb3RhdGlvbik7CisKICAgICB2b2lkIGluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBv
cHRpb25zKTsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1
ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwpAQCAtODAsOCArODMsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRp
Z2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIHVuc2lnbmVkIG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzIHsgMCB9OworICAgIEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9OwogICAgIFR5cGUgbV90eXBlIHsgVHlw
ZTo6Q2FyZGluYWwgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYxODI1YTBjZjE2NTdlMTFhYmRiYTguLjg0NTZl
MzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNiMDVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgwLDYgKzE4MCw3IEBACiAJCUUzOEQ2RTI3MUY1
NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyog
U3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwogCQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMg
LyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdl
Q29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1h
bGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi87IH07CisJCUUz
QkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAv
KiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRB
MEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRG
NiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJCUVCNjFFREM3MjQwOUNDQzEwMDFFRkUz
NiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNp
bmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiArNzMyLDcgQEAKIAkJRTM5MkZBMjYyMkU5MkJG
RjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2
IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNW
YWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0JFMDlBNjI0QTU4
NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxw
ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAw
OTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Nj
b3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5o
ICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCi0J
CQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8qIFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJ
CQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCAqLywK
KwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywK
IAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZC
QTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8sCiAJCQkJRTM2MEM3NjQyMTI3
Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vzcy5oICovLApAQCAtMTQ1Miw2ICsxNDU0LDcg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThBNDczNTAxNTFB
ODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAqLywKKwkJCQlFM0JFMDlBNjI0QTU4NTQ1
MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8sCiAJCQkJNTJCMjI4QzEyNDU4REM4MjAwNzUz
RDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaWN1OwpAQCAtMTY3Niw2
ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0
ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8q
IEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdB
QTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzQkUwOUE3MjRBNTg1NEQw
MDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMDUwOTNGMUZC
OURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzQTMy
QkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJQTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8q
IFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMw
MEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Yx
OTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5n
Vmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZG
IC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApAQCAtMTc2NCw2ICsxNzY3LDcgQEAKIAkJCQk1
MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFEM0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBU
aW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3
RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTUy
MENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
RjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5ZTVkNWRhMDdjYmFiYTk0ZTk0NjExMDFlMjJk
Li5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2UwOTUyMDY2ZDBiZWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIHVuaWNvZGUv
VVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKyAg
ICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAogKQogCiBzZXQoV1RGX1BSSVZBVEVfSU5DTFVE
RV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVy
YWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKaW5kZXggYTkwOGRmM2Jl
YTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3Ny4uZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEy
MzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxp
dGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDcs
NyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKyAgICBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25z
dCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdGV4cHIg
ZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0
ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIw
ZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFmMzhkLi5jMjJhOGFlMzQ0NjFjM2IzY2M4MDJi
ZmNiNTMwMWE2NjcyYmM5ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlM
aXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4
LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7
CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBTdHJp
bmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwog
CkBAIC0zNTYsNiArMzU4LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXplKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAoraW5s
aW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sKKyAgICBp
bml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBp
bmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7
CiAgICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvdW5pY29k
ZS9pY3UvSUNVSGVscGVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZmM2UxMGNmNDZmNTk4YjM4ZjFiMDQ5
MjY1ZmNjZTdmZTgyYzczMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworI2luY2x1ZGUgPG11dGV4PgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdXZlcm51bS5oPgorCituYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBJ
Q1UgeworCitzdGF0aWMgY29uc3QgVVZlcnNpb25JbmZvJiB2ZXJzaW9uKCkKK3sKKyAgICBzdGF0
aWMgVVZlcnNpb25JbmZvIHZlcnNpb25zIHsgfTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICB1X2dl
dFZlcnNpb24odmVyc2lvbnMpOworICAgIH0pOworICAgIHJldHVybiB2ZXJzaW9uczsKK30KKwor
dW5zaWduZWQgbWFqb3JWZXJzaW9uKCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KDAgPCBVX01BWF9W
RVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZlcnNpb24oKVswXTsKK30KKwordW5zaWduZWQg
bWlub3JWZXJzaW9uKCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KDEgPCBVX01BWF9WRVJTSU9OX0xF
TkdUSCk7CisgICAgcmV0dXJuIHZlcnNpb24oKVsxXTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBX
VEY6OklDVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVy
cy5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCmluZGV4IDcyYTk0
M2UyNWEyNDliZjUxZjg0NGQ0MGNiN2QwZjg1YTcyMjI5MTkuLjFhZTMxMDRjMzRkODcwYjM2NzIw
Y2U1YjA1ODg2ZjY4OWQ4YmJjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUv
aWN1L0lDVUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxw
ZXJzLmgKQEAgLTEwNyw3ICsxMDcsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBl
LCB0eXBlbmFtZSAuLi5Bcmd1bWVudFR5cGVzPiBVRXJyb3JDb2RlIGNhbGxCdWZmZXIKICAgICBy
ZXR1cm4gc3RhdHVzOwogfQogCi19CituYW1lc3BhY2UgSUNVIHsKKwordW5zaWduZWQgbWFqb3JW
ZXJzaW9uKCk7Cit1bnNpZ25lZCBtaW5vclZlcnNpb24oKTsKKworfSAvLyBuYW1lc3BhY2UgSUNV
Cit9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb247CiB1c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZzsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGExMjEzNTNi
YjQxNDU0Zjg0ODNjNjk2ZmVjNzJiM2I5MjhiOWQ3OC4uYjExMGM1ODE5NzI1ZjU0ZDI0YzU2MmQx
NGZiMmY4M2Q5MjNmNDkxMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA2
LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgaW5jbHVkZWQgY29weSBvZiBzdHJlc3MvbGxpbnR0cnVlLmpzIGFjY2lkZW50YWxseS4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAppbmRleCBhNzlmMmRiZTM2MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0Yjk0
ZGYxLi4yMGU1ZTUzOTlhM2MxYWE5NjdkZTdhOTBjNWRiNWE3YzVhYzY2NTM4IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC0yOCw3ICsyOCw2IEBAIHNraXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0
LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKICAgICAtIEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJ
bnRsLkxpc3RGb3JtYXQKLSAgICAtIEludGwuTnVtYmVyRm9ybWF0LXVuaWZpZWQKICAgICAtIElu
dGwuU2VnbWVudGVyCiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJv
dG90eXBlL2dldEJpZ0ludDY0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402854</attachid>
            <date>2020-06-25 23:20:50 -0700</date>
            <delta_ts>2020-06-26 13:15:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200625232049.patch</filename>
            <type>text/plain</type>
            <size>73221</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YmM5OTE0YWRhMzEzMGJlOWQ3ZTMzMzY3Nzk1OThiYTBhYmE0ZmUyLi45NDhjYmFhYWY1NmRkYzQ2
NGNiZDNjYmY0YjFjYTkzOWM0MDY1ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAg
ICAgICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFz
dXJlVW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAg
KEpTQzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6Oldl
bGxGb3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3Jt
ZWRVbml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXQgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6c2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25z
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6
OkludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uSUNVVmVyc2lvbik6CisKIDIwMjAtMDYtMjUgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjMwMzUp
OiBzdHJlc3MvZ2V0LXByb3RvdHlwZS1vZi5qcyBicm9rZW4gb24gczM5MHgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDI3YjAx
NmIzOTMwODc5ZWNlZTA3MzQ5MjM3YzY0NjQ2NWYwMjk5MC4uZjE0NGZmODE4MTVhMjliMTNmZjU1
ZDM5ZDE0Mzg3MGIwY2M0MzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0yNSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5p
ZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL3Rl
eHQvQVNDSUlMaXRlcmFsLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KToKKyAgICAgICAgKiB3dGYvdW5pY29k
ZS9pY3UvSUNVSGVscGVycy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmguCisgICAgICAgIChXVEY6OklDVTo6dmVyc2lvbik6CisgICAgICAgIChXVEY6
OklDVTo6bWFqb3JWZXJzaW9uKToKKyAgICAgICAgKFdURjo6SUNVOjptaW5vclZlcnNpb24pOgor
ICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg6CisKIDIwMjAtMDYtMjUgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyB0ZW1wbGF0
ZWQgc3RyaW5nIHR5cGUgdG8gaGVscCB3cml0ZSBtb3JlIGlkaW9tYXRpYyBwYXJzaW5nIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMy
MjgwZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJ
CUUzMjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgx
NDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkg
LyogREZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMu
aCAqLzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1
MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5
MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkz
REE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEy
QzkwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8q
IFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDcz
NDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5n
UHJvdG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyog
WWFyckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1
LDcgQEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRo
ID0gZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMyMkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGgg
PSBmdGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9G
VExTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4
MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0
OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFF
Q0JFRjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5
MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywK
IAkJCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAq
LywKQEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyog
SW50bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIy
ZjNhYjE3OTkyMmViYTgzOGFhMjkzOC4uNDNjY2ZlOWE1ZWE4OTRmMTFhZWU5Y2Q4NmMyZmRkMWJh
ZTAxYzhlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTQyLDYgKzQzLDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG4KIAogbmFtZXNwYWNlIEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbCB7
CiBjb25zdGV4cHIgY29uc3QgY2hhciogcmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUi
IH07Citjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKIHN0cnVjdCBJbnRsTnVt
YmVyRm9ybWF0RmllbGQgewpAQCAtNDksMTEgKzUxLDI1IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9y
bWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAorI2lmIEhBVkUoSUNVX1VOVU1GKQor
dm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3Io
KShVTnVtYmVyRm9ybWF0dGVyKiBudW1iZXJGb3JtYXR0ZXIpIGNvbnN0Cit7CisgICAgaWYgKG51
bWJlckZvcm1hdHRlcikKKyAgICAgICAgdW51bWZfY2xvc2UobnVtYmVyRm9ybWF0dGVyKTsKK30K
Kwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcjo6b3BlcmF0
b3IoKShVRm9ybWF0dGVkTnVtYmVyKiBmb3JtYXR0ZWROdW1iZXIpIGNvbnN0Cit7CisgICAgaWYg
KGZvcm1hdHRlZE51bWJlcikKKyAgICAgICAgdW51bWZfY2xvc2VSZXN1bHQoZm9ybWF0dGVkTnVt
YmVyKTsKK30KKyNlbHNlCiB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxl
dGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkgY29uc3QKIHsKICAg
ICBpZiAobnVtYmVyRm9ybWF0KQogICAgICAgICB1bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7CiB9
CisjZW5kaWYKIAogSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CkBAIC0xMTksNyArMTM1LDcgQEAgc3RhdGlj
IHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQog
ICAgIC8vIDExLjEuMSBUaGUgYWJzdHJhY3Qgb3BlcmF0aW9uIEN1cnJlbmN5RGlnaXRzIChjdXJy
ZW5jeSkKICAgICAvLyAiSWYgdGhlIElTTyA0MjE3IGN1cnJlbmN5IGFuZCBmdW5kcyBjb2RlIGxp
c3QgY29udGFpbnMgY3VycmVuY3kgYXMgYW4gYWxwaGFiZXRpYyBjb2RlLAogICAgIC8vIHRoZW4g
cmV0dXJuIHRoZSBtaW5vciB1bml0IHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbmN5
IGZyb20gdGhlIGxpc3Q7IGVsc2UgcmV0dXJuIDIuCi0gICAgc3RkOjpwYWlyPGNvbnN0IGNoYXIq
LCB1bnNpZ25lZD4gY3VycmVuY3lNaW5vclVuaXRzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9
IHsKICAgICAgICAgeyAiQkhEIiwgMyB9LAogICAgICAgICB7ICJCSUYiLCAwIH0sCiAgICAgICAg
IHsgIkJZUiIsIDAgfSwKQEAgLTE1Myw2ICsxNjksMTMzIEBAIHN0YXRpYyB1bnNpZ25lZCBjb21w
dXRlQ3VycmVuY3lEaWdpdHMoY29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKICAgICByZXR1cm4gMjsK
IH0KIAorLy8gQ3JlYXRlIE1lYXN1cmVVbml0IGxpa2UgSUNVNEouCitjbGFzcyBNZWFzdXJlVW5p
dCB7CitwdWJsaWM6CisgICAgY29uc3RleHByIE1lYXN1cmVVbml0KEFTQ0lJTGl0ZXJhbCB0eXBl
LCBBU0NJSUxpdGVyYWwgc3ViVHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAg
LCBtX3N1YlR5cGUoc3ViVHlwZSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBBU0NJSUxpdGVy
YWwgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0ZXhwciBBU0NJSUxp
dGVyYWwgc3ViVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ViVHlwZTsgfQorCitwcml2YXRlOgor
ICAgIEFTQ0lJTGl0ZXJhbCBtX3R5cGU7CisgICAgQVNDSUlMaXRlcmFsIG1fc3ViVHlwZTsKK307
CisKK3N0YXRpYyBPcHRpb25hbDxNZWFzdXJlVW5pdD4gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVu
dGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBNZWFzdXJlVW5pdCBzaW1wbGVVbml0c1tdID0geworICAgICAgICB7ICJhcmVhIl9zLCAiYWNy
ZSJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYml0Il9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJieXRlIl9zIH0sCisgICAgICAgIHsgInRlbXBlcmF0dXJlIl9zLCAiY2Vsc2l1
cyJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJjZW50aW1ldGVyIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAiZGF5Il9zIH0sCisgICAgICAgIHsgImFuZ2xlIl9zLCAiZGVncmVl
Il9zIH0sCisgICAgICAgIHsgInRlbXBlcmF0dXJlIl9zLCAiZmFocmVuaGVpdCJfcyB9LAorICAg
ICAgICB7ICJ2b2x1bWUiX3MsICJmbHVpZC1vdW5jZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgi
X3MsICJmb290Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImdhbGxvbiJfcyB9LAorICAg
ICAgICB7ICJkaWdpdGFsIl9zLCAiZ2lnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9z
LCAiZ2lnYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgImdyYW0iX3MgfSwKKyAgICAg
ICAgeyAiYXJlYSJfcywgImhlY3RhcmUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJo
b3VyIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImluY2giX3MgfSwKKyAgICAgICAgeyAi
ZGlnaXRhbCJfcywgImtpbG9iaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImtpbG9i
eXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJraWxvZ3JhbSJfcyB9LAorICAgICAgICB7
ICJsZW5ndGgiX3MsICJraWxvbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAibGl0
ZXIiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgIm1lZ2FiaXQiX3MgfSwKKyAgICAgICAg
eyAiZGlnaXRhbCJfcywgIm1lZ2FieXRlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1l
dGVyIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUiX3MgfSwKKyAgICAgICAgeyAi
bGVuZ3RoIl9zLCAibWlsZS1zY2FuZGluYXZpYW4iX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9z
LCAibWlsbGlsaXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxsaW1ldGVyIl9z
IH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWlsbGlzZWNvbmQiX3MgfSwKKyAgICAgICAg
eyAiZHVyYXRpb24iX3MsICJtaW51dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJt
b250aCJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAib3VuY2UiX3MgfSwKKyAgICAgICAgeyAi
Y29uY2VudHIiX3MsICJwZXJjZW50Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJwZXRh
Ynl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAicG91bmQiX3MgfSwKKyAgICAgICAgeyAi
ZHVyYXRpb24iX3MsICJzZWNvbmQiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInN0b25lIl9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJ0ZXJhYml0Il9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJ0ZXJhYnl0ZSJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIndlZWsi
X3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAieWFyZCJfcyB9LAorICAgICAgICB7ICJkdXJh
dGlvbiJfcywgInllYXIiX3MgfSwKKyAgICB9OworCisgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6
bG93ZXJfYm91bmQoc3RkOjpiZWdpbihzaW1wbGVVbml0cyksIHN0ZDo6ZW5kKHNpbXBsZVVuaXRz
KSwgdW5pdElkZW50aWZpZXIsCisgICAgICAgIFtdIChjb25zdCBNZWFzdXJlVW5pdCYgdW5pdCwg
Y29uc3QgU3RyaW5nVmlldyYgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmICh1bml0
SWRlbnRpZmllci5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9p
bnRDb21wYXJlKHVuaXQuc3ViVHlwZSgpLmNoYXJhY3RlcnMoKSwgdW5pdC5zdWJUeXBlKCkubGVu
Z3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0
aCgpKSA8IDA7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlKHVuaXQu
c3ViVHlwZSgpLmNoYXJhY3RlcnMoKSwgdW5pdC5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVu
dGlmaWVyLmNoYXJhY3RlcnMxNigpLCB1bml0SWRlbnRpZmllci5sZW5ndGgoKSkgPCAwOworICAg
ICAgICB9KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gc3RkOjplbmQoc2ltcGxlVW5pdHMpKSB7Cisg
ICAgICAgIGlmIChXVEY6OmNvZGVQb2ludENvbXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFy
YWN0ZXJzKCksIGl0ZXJhdG9yLT5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNo
YXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0aCgpKSA9PSAwKQorICAgICAgICAgICAg
cmV0dXJuICppdGVyYXRvcjsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwor
Y2xhc3MgV2VsbEZvcm1lZFVuaXQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlbGxGb3JtZWRV
bml0KE1lYXN1cmVVbml0IG51bWVyYXRvcikKKyAgICAgICAgOiBtX251bWVyYXRvcihudW1lcmF0
b3IpCisgICAgeworICAgIH0KKworICAgIFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0IG51bWVy
YXRvciwgTWVhc3VyZVVuaXQgZGVub21pbmF0b3IpCisgICAgICAgIDogbV9udW1lcmF0b3IobnVt
ZXJhdG9yKQorICAgICAgICAsIG1fZGVub21pbmF0b3IoZGVub21pbmF0b3IpCisgICAgeworICAg
IH0KKworICAgIE1lYXN1cmVVbml0IG51bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtZXJh
dG9yOyB9CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZW5vbWluYXRvcjsgfQorcHJpdmF0ZToKKyAgICBNZWFzdXJlVW5pdCBtX251bWVy
YXRvcjsKKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gbV9kZW5vbWluYXRvcjsKK307CisKK3N0
YXRpYyBPcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0
cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllcgorICAgIGlmIChhdXRvIHVuaXQgPSBz
YW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIodW5pdElkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gV2VsbEZvcm1lZFVuaXQodW5pdC52YWx1ZSgpKTsKKworICAgIC8vIElmIHRoZSBzdWJz
dHJpbmcgIi1wZXItIiBkb2VzIG5vdCBvY2N1ciBleGFjdGx5IG9uY2UgaW4gdW5pdElkZW50aWZp
ZXIsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gcGVyID0gU3RyaW5nVmlldygiLXBlci0i
X3MpOworICAgIGF1dG8gcG9zID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOworICAgIGlmIChw
b3MgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBh
dXRvIHBvczIgPSB1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zICsgcGVyLmxlbmd0aCgpKTsK
KyAgICBpZiAocG9zMiAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRl
bnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
IG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZygwLCBwb3MpOworICAgIGF1dG8g
bnVtZXJhdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3Ip
OworICAgIGlmICghbnVtZXJhdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZp
ZXIoZGVub21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIGRl
bm9taW5hdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvcyArIHBlci5sZW5ndGgoKSk7
CisgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZp
ZXIoZGVub21pbmF0b3IpOworICAgIGlmICghZGVub21pbmF0b3JVbml0KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVu
aXQudmFsdWUoKSwgZGVub21pbmF0b3JVbml0LnZhbHVlKCkpOworfQorCiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKQEAg
LTE5MSwyMCArMzM0LDI1IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX2xvY2Fs
ZSA9IHJlc3VsdC5nZXQoImxvY2FsZSJfcyk7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIG1fbnVtYmVyaW5nU3lzdGVtID0gcmVzdWx0LmdldCgibnUiX3Mp
OwogCi0gICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNpbWFsIiwgInBlcmNl
bnQiLCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJw
ZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFsIik7CisgICAgLy8gU2V0TnVtYmVy
Rm9ybWF0VW5pdE9wdGlvbnMoaW50bE9iamVjdCwgb3B0aW9ucykKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLXNldG51bWJlcmZvcm1hdHVuaXRvcHRpb25zCisKKyAgICBTdHJp
bmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5j
eSIsICJ1bml0IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2Vu
dFwiLCBcImN1cnJlbmN5XCIsIG9yIFwidW5pdFwiIiwgImRlY2ltYWwiKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIGlmIChzdHlsZVN0cmluZyA9PSAiZGVj
aW1hbCIpCisgICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIl9zKQogICAgICAgICBtX3N0
eWxlID0gU3R5bGU6OkRlY2ltYWw7Ci0gICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInBlcmNl
bnQiKQorICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50Il9zKQogICAgICAgICBt
X3N0eWxlID0gU3R5bGU6OlBlcmNlbnQ7Ci0gICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gImN1
cnJlbmN5IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAiY3VycmVuY3kiX3MpCiAgICAg
ICAgIG1fc3R5bGUgPSBTdHlsZTo6Q3VycmVuY3k7CisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcg
PT0gInVuaXQiX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6VW5pdDsKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0yMTIsNyArMzYwLDcgQEAgdm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGN1cnJlbmN5Lmxl
bmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFs
cGhhPigpKSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1cnJlbmN5IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVu
Y3kgY29kZSJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0y
MjksNjAgKzM3NywyNjggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgY3VycmVu
Y3lEaWdpdHMgPSBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY3VycmVuY3kpOwogICAgIH0KIAotICAg
IFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxh
eSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1ib2wiKTsK
KyAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURp
c3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFycm93U3ltYm9sIiwgIm5hbWUiIH0sICJj
dXJyZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIFwibmFy
cm93U3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5bWJvbCIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5
KSB7Ci0gICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNvZGUiKQorICAgICAg
ICBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIl9zKQogICAgICAgICAgICAgbV9j
dXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OkNvZGU7Ci0gICAgICAgIGVsc2UgaWYg
KGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIikKKyAgICAgICAgZWxzZSBpZiAoY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5
RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOwotICAgICAgICBlbHNlIGlmIChjdXJy
ZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUiKQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURp
c3BsYXlTdHJpbmcgPT0gIm5hcnJvd1N5bWJvbCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lE
aXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w7CisgICAgICAgIGVsc2UgaWYg
KGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSJfcykKICAgICAgICAgICAgIG1fY3VycmVu
Y3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYW1lOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVt
SW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEs
IDEpOworICAgIFN0cmluZyBjdXJyZW5jeVNpZ25TdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5
U2lnbiIpLCB7ICJzdGFuZGFyZCIsICJhY2NvdW50aW5nIiB9LCAiY3VycmVuY3lTaWduIG11c3Qg
YmUgZWl0aGVyIFwic3RhbmRhcmRcIiBvciBcImFjY291bnRpbmdcIiIsICJzdGFuZGFyZCIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50
ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgeworICAgICAgICBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJzdGFu
ZGFyZCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpTdGFu
ZGFyZDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJhY2NvdW50aW5n
Il9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNpZ246OkFjY291bnRp
bmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHls
ZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAwOworICAgIFN0cmluZyB1
bml0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBPcHRpb25hbDxXZWxsRm9ybWVk
VW5pdD4gd2VsbEZvcm1lZFVuaXQ7CisgICAgaWYgKCF1bml0LmlzTnVsbCgpKSB7CisgICAgICAg
IHdlbGxGb3JtZWRVbml0ID0gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKHVuaXQpOworICAgICAg
ICBpZiAoIXdlbGxGb3JtZWRVbml0KSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInVuaXQgaXMgbm90IGEgd2VsbC1mb3JtZWQgdW5pdCBpZGVudGlm
aWVyIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3VuaXQg
PSB1bml0OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0
KSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVu
aXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlz
cGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9uZyIgfSwgInVuaXREaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZy
YWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09
IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAic2hvcnQi
X3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6OlNob3J0OworICAg
ICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAibmFycm93Il9zKQorICAgICAgICAg
ICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpOYXJyb3c7CisgICAgICAgIGVsc2UgaWYg
KHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxh
eSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkKLSAgICAgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRp
Z2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBl
cmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7CisgICAgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5j
eSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0
cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/IDAgOiAzOwogCi0gICAgdW5zaWduZWQg
bWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMi
KSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCB7
ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2luZWVyaW5nIiwgImNvbXBhY3QiIH0sICJu
b3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wiLCBcImVu
Z2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9
IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobm90YXRpb25TdHJpbmcgPT0gInN0YW5k
YXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAg
ICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2NpZW50aWZpYyJfcykKKyAgICAgICAgbV9u
b3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzsKKyAgICBlbHNlIGlmIChub3RhdGlv
blN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90
YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJjb21w
YWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpDb21wYWN0OworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBKU1ZhbHVlIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAg
ICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25z
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNvbXBhY3REaXNwbGF5ID0gaW50bFN0cmlu
Z09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJsb25nIiB9LCAiY29tcGFjdERpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAg
ICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0
czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKKyAgICAg
ICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1fY29tcGFj
dERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYgKGNvbXBh
Y3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxheSA9IENv
bXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29s
ZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpGYWxzZTsK
IAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyAi
YXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0WmVybyIgfSwgInNpZ25EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0
WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJfcykKKyAgICAgICAgbV9zaWduRGlzcGxh
eSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJuZXZl
ciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpOZXZlcjsKKyAgICBl
bHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5
ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiZXhj
ZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRa
ZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyBP
cHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZvcm1hdHRlciBoZXJlLgorCisjaWYgSEFW
RShJQ1VfVU5VTUYpCisgICAgLy8gQ29uc3RydWN0aW5nIElDVSBOdW1iZXIgU2tlbGV0b25zIHRv
IGNvbmZpZ3VyZSBVTnVtYmVyRm9ybWF0dGVyLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kCisKKyAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVpbGRlcjsK
KyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicm91bmRpbmctbW9kZS1oYWxmLXVw
Iik7CisKKyAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgor
ICAgICAgICAvLyBObyBza2VsZXRvbiBpcyBuZWVkZWQuCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3R5bGU6OlBlcmNlbnQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgcGVyY2VudCBzY2FsZS8xMDAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6
Q3VycmVuY3k6IHsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjdXJy
ZW5jeS8iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChjdXJyZW5jeSk7CisKKyAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0
aAorICAgICAgICBzd2l0Y2ggKG1fY3VycmVuY3lEaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ3Vy
cmVuY3lEaXNwbGF5OjpDb2RlOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB1bml0LXdpZHRoLWlzby1jb2RlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKKyAgICAgICAgICAgIC8vIERlZmF1bHQg
b3B0aW9uLiBEbyBub3Qgc3BlY2lmeSB1bml0LXdpZHRoLgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU6CisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtZnVsbC1u
YW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBTdHlsZTo6VW5pdDogeworICAgICAgICAvLyBUaGUgbWVhc3VyZS11bml0
IHN0ZW0gdGFrZXMgb25lIHJlcXVpcmVkIG9wdGlvbjogdGhlIHVuaXQgaWRlbnRpZmllciBvZiB0
aGUgdW5pdCB0byBiZSBmb3JtYXR0ZWQuCisgICAgICAgIC8vIFRoZSBmdWxsIHVuaXQgaWRlbnRp
ZmllciBpcyByZXF1aXJlZDogYm90aCB0aGUgdHlwZSBhbmQgdGhlIHN1YnR5cGUgKGZvciBleGFt
cGxlLCBsZW5ndGgtbWV0ZXIpLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCN1bml0CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgbWVhc3VyZS11bml0LyIpOworICAgICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSB3ZWxsRm9y
bWVkVW5pdC0+bnVtZXJhdG9yKCk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobnVt
ZXJhdG9yVW5pdC50eXBlKCksICctJywgbnVtZXJhdG9yVW5pdC5zdWJUeXBlKCkpOworICAgICAg
ICBpZiAoYXV0byBkZW5vbWluYXRvclVuaXRWYWx1ZSA9IHdlbGxGb3JtZWRVbml0LT5kZW5vbWlu
YXRvcigpKSB7CisgICAgICAgICAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IGRlbm9taW5hdG9y
VW5pdFZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHBlci1tZWFzdXJlLXVuaXQvIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKGRlbm9taW5hdG9yVW5pdC50eXBlKCksICctJywgZGVub21pbmF0b3JVbml0LnN1YlR5
cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCN1bml0LXdpZHRoCisgICAgICAgIHN3aXRjaCAobV91bml0RGlzcGxheSkg
eworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1zaG9ydCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Ok5hcnJvdzoKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25nOgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2lu
dGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGludGVnZXIt
d2lkdGgvIik7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgoV1RGOjpJQ1U6Om1ham9yVmVy
c2lvbigpID49IDY3KSA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBz
eW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWlu
aW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
MCcpOworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgnMCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czogeworICAgICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNl
cmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWduaWZpY2FudC1kaWdp
dHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyAr
K2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgLy8gRG8gbm90IHNldCBhbnl0aGluZy4K
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVy
cy9za2VsZXRvbnMubWQjbm90YXRpb24KKyAgICBzd2l0Y2ggKG1fbm90YXRpb24pIHsKKyAgICBj
YXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHNjaWVudGlmaWMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRp
b246OkVuZ2luZWVyaW5nOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IGVuZ2luZWVyaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpD
b21wYWN0OgorICAgICAgICBzd2l0Y2ggKG1fY29tcGFjdERpc3BsYXkpIHsKKyAgICAgICAgY2Fz
ZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LWxvbmciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ24tZGlzcGxheQorICAgIC8vIEN1cnJlbmN5U2lnbidz
IGFjY291bnRpbmcgaXMgYSBwYXJ0IG9mIFNpZ25EaXNwbGF5IGluIElDVS4KKyAgICBib29sIHVz
ZUFjY291bnRpbmcgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kgJiYgbV9jdXJyZW5jeVNp
Z24gPT0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nKTsKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3Bs
YXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICBpZiAodXNlQWNjb3Vu
dGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1h
Y2NvdW50aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgc2lnbi1hdXRvIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ln
bkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tbmV2ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3
YXlzOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWFsd2F5cyIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWx3
YXlzIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86
CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmctZXhjZXB0LXplcm8iKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWV4
Y2VwdC16ZXJvIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghbV91c2VHcm91
cGluZykKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBncm91cC1vZmYi
KTsKKworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOwor
ICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgbV9sb2Nh
bGUpOworICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwg
c2tlbGV0b24pOworICAgIFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZvcm1hdHRlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRl
cj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHNrZWxldG9uVmlldy51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKS5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBtX2xvY2FsZS51dGY4
KCkuZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKICAg
ICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoICht
X3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTI5OSw2NSArNjU1LDg2IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpT
eW1ib2w6CiAgICAgICAgICAgICBzdHlsZSA9IFVOVU1fQ1VSUkVOQ1k7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJS
RU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3R5
bGU6OlVuaXQ6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1i
ZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERl
bGV0ZXI+KHVudW1fb3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEo
KSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRp
YWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kp
IHsKICAgICAgICAgdW51bV9zZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX0NVUlJFTkNZX0NPREUsIFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIG1fY3VycmVuY3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgaWYgKCFtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgeworCisgICAgc3dp
dGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rp
b25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgp
LCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFD
VElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywg
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIHVu
dW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJ
R0lUU19VU0VELCB0cnVlKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQo
KSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0
cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJv
dW5kaW5nOgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9V
UElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7Cisj
ZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIK
IEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQp
OwotCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsK
KyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVt
YmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJE
ZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZh
bHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERv
dWJsZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCBidWZmZXIsIG51bGxwdHIpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Ci0KKyNl
bmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQq
IHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0zNjgsMTAgKzc0NSwyNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3Jt
YXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUp
CiAgICAgYXV0byogcmF3U3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3Ry
aW5nLmNoYXJhY3RlcnM4KCkpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lm
IEhBVkUoSUNVX1VOVU1GKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIg
PSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0
ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgIHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0
cmluZywgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7Cisg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3Ry
aW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bnVtX2Zvcm1hdERlY2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcs
IHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4g
anNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzc3Niw4IEBAIEFT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAg
ICAgICAgcmV0dXJuICJwZXJjZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAg
ICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAg
IHJldHVybiAidW5pdCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwpAQCAtMzk2LDYgKzc5MCw4IEBAIEFTQ0lJTGl0
ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNw
bGF5IGN1cnJlbmN5RGlzCiAgICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJl
bmN5RGlzcGxheTo6U3ltYm9sOgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5
bWJvbCJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJu
ICJuYW1lIl9zOwogICAgIH0KQEAgLTQwMyw2ICs3OTksNzYgQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVu
Y3lEaXMKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJh
bCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24p
Cit7CisgICAgc3dpdGNoIChub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFu
ZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlv
bjo6U2NpZW50aWZpYzoKKyAgICAgICAgcmV0dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2Ug
SW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJf
czsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21w
YWN0Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpj
dXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0
Y2ggKGN1cnJlbmN5U2lnbikgeworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAg
ICAgICAgcmV0dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3Vu
dGluZzoKKyAgICAgICAgcmV0dXJuICJhY2NvdW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxh
eSB1bml0RGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBV
bml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBV
bml0RGlzcGxheTo6TmFycm93OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNl
IFVuaXREaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
K30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5n
KENvbXBhY3REaXNwbGF5IGNvbXBhY3REaXNwbGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERp
c3BsYXkpIHsKKyAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJu
ICJzaG9ydCJfczsKKyAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1
cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3Jt
YXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3
aXRjaCAoc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAg
ICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAg
IHJldHVybiAibmV2ZXIiX3M7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAg
ICByZXR1cm4gImFsd2F5cyJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgor
ICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRvcHRpb25zCiBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CkBAIC00MTQsMTYgKzg4MCwyNiBA
QCBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJl
bmN5KSB7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJyZW5jeSkp
OwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeURp
c3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3BsYXkpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5U2lnbiIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5U2lnblN0cmluZyhtX2N1cnJlbmN5U2lnbikpKTsK
ICAgICB9CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRp
Z2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFj
dGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICBBU1NFUlQobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgIHN3aXRjaCAobV9y
b3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRz
OgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051
bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3Rh
dGlvbikpKTsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlT
dHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9w
dGlvbnM7CiB9CiAKQEAgLTUxNSwyMCArOTkxLDM4IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJs
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3Bh
cnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251
bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVlX3B0cjxV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcj4odWZp
ZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBvcGVuIGZpZWxkIHBv
c2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyNp
ZiBIQVZFKElDVV9VTlVNRikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5p
cXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZf
b3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51
bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVk
TnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1
bHQpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX3Jlc3VsdEdldEFsbEZp
ZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJlci5nZXQoKSwgZmllbGRJdHIuZ2V0KCksICZzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2Fs
bEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251
bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIG51bWJlci4iX3MpOworI2VuZGlmCiAKICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0
cmluZyhyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmgKaW5kZXggNDMwNGIyMmE4YzZhNTExZjc0ZTJiZGNiMDUzODhkNWI2NWI3
MzQ3Ni4uOTBjN2YxODY5YzkyMTEwMmE0NzcwMTIzYjVhZDU5ZmVhMmYwMzg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMjks
MTAgKzI5LDI0IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vu
dW0uaD4KIAorI2lmICFkZWZpbmVkKEhBVkVfSUNVX1VOVU1GKQorI2lmIFVfSUNVX1ZFUlNJT05f
TUFKT1JfTlVNID49IDYyCisjZGVmaW5lIEhBVkVfSUNVX1VOVU1GIDEKKyNlbmRpZgorI2VuZGlm
CisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0
ZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNCb3VuZEZ1bmN0aW9u
OwogCitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdp
dHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50
bE5vdGF0aW9uIDogdWludDhfdCB7IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywg
Q29tcGFjdCB9OwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9y
bWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC02Niw2ICs4MCwxMSBAQCBjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgc3RhdGlj
IHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBjb25z
dCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRvciosIEpTQXJyYXkqLCBK
U1N0cmluZyogdW5pdCA9IG51bGxwdHIpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5
cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxO
b3RhdGlvbik7CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGF0aW9uU3RyaW5nKEludGxO
b3RhdGlvbik7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVjdHVy
ZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTczLDIyICs5Miw0MCBAQCBj
bGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
CiAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6
ZV90KTsKIAotICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2Vu
dCwgQ3VycmVuY3kgfTsKLSAgICBlbnVtIGNsYXNzIEN1cnJlbmN5RGlzcGxheSA6IHVpbnQ4X3Qg
eyBDb2RlLCBTeW1ib2wsIE5hbWUgfTsKLQotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRl
ciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAg
fTsKKyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1
cnJlbmN5LCBVbml0IH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90
IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBlbnVtIGNsYXNzIEN1
cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OworICAgIGVudW0g
Y2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OworICAg
IGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKKyAg
ICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMs
IEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5
bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJl
bmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3RyaW5n
KFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5U3Ry
aW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNwbGF5
U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+
IG1fYm91bmRGb3JtYXQ7CisjaWYgSEFWRShJQ1VfVU5VTUYpCisgICAgc3RydWN0IFVOdW1iZXJG
b3JtYXR0ZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0
ZXIqKSBjb25zdDsKKyAgICB9OworICAgIHN0cnVjdCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlciB7
CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRm9ybWF0dGVkTnVtYmVyKikgY29uc3Q7CisgICAg
fTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRl
ckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2Vsc2UKKyAgICBzdHJ1Y3QgVU51bWJlckZv
cm1hdERlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNv
bnN0OworICAgIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9j
YWxlOwogICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5j
eTsKKyAgICBTdHJpbmcgbV91bml0OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CkBAIC05Niw3ICsxMzMs
MTMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAg
ICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkg
bV9jdXJyZW5jeURpc3BsYXk7CisgICAgQ3VycmVuY3lTaWduIG1fY3VycmVuY3lTaWduOworICAg
IFVuaXREaXNwbGF5IG1fdW5pdERpc3BsYXk7CisgICAgQ29tcGFjdERpc3BsYXkgbV9jb21wYWN0
RGlzcGxheTsKKyAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6U3Rh
bmRhcmQgfTsKKyAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwogICAgIGJvb2wgbV91c2VH
cm91cGluZyB7IHRydWUgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsg
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY1OWQ0YWQ3MjViODEzOTZhZTBkM2RmMzk5
M2VkMTUxZTQzNzI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDICB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEludGxUeXBlPgordm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGludGxJbnN0YW5jZSwgSlNPYmpl
Y3QqIG9wdGlvbnMsIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbiBub3RhdGlvbikK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdp
dHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWF4aW11bUZyYWN0
aW9uRGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVt
SW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOworCisgICAgaWYgKCFtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAgICAg
ICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwg
MSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAg
IHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91
bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1G
cmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVhbERlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVt
RnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgICAgICB1
bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0
cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVhbERlZmF1bHQpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGln
aXRzOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5vdGF0aW9uID09IEludGxO
b3RhdGlvbjo6Q29tcGFjdCkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBl
ID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzOworICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGludGxJbnN0YW5jZS0+
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0Owor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGM0OTlhZGExOWYzYWQ0YzJmODMwYWRjM2M1
M2I4ZDVhNmMxZjU3NmYuLjM0M2E0NzQzZmRjNDdkNDU4MDliMmI0ODc2YjJlZTE3OTIxOTExZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklu
dGxQbHVyYWxSdWxlcy5oIgogCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIK
ICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC0xMjUsMzQgKzEyNiw4IEBAIHZvaWQgSW50bFBs
dXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICBtX3R5cGUgPSB0eXBlU3RyaW5nID09ICJvcmRpbmFsIiA/IFR5cGU6Ok9yZGluYWwgOiBUeXBl
OjpDYXJkaW5hbDsKIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgc2V0TnVtYmVyRm9y
bWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7Ci0K
LSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gMDsKLSAgICB1bnNp
Z25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRp
Z2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsKLSAg
ICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFj
dGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotCi0g
ICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQot
ICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0K
LSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwg
IW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
dW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNp
Z25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1h
eGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwg
bnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwpA
QCAtMTYxLDE0ICsxMzYsMjAgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVy
YWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdOSUZJ
Q0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11bVNp
Z25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251
bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1T
aWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICB9IGVsc2UgeworICAgIHN3aXRjaCAobV9y
b3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRz
OgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9N
SU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJEaWdpdHMpOwogICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fRlJBQ1RJT05fRElH
SVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFDVElPTl9ESUdJVFMsIG1fbWF4aW11
bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOworICAg
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lH
TklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIHVu
dW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FO
VF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMTkxLDEx
ICsxNzIsMTggQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9s
b2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5
cGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyAib3Jk
aW5hbCJfcyA6ICJjYXJkaW5hbCJfcykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIGpzTnVtYmVy
KG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1i
ZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNO
dW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBpZiAobV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMpIHsKLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpKTsKLSAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpKTsK
KyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1f
bWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEpTQXJyYXkq
IGNhdGVnb3JpZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3Vv
dXMpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmgKaW5kZXggYjAxNWZlODJhMGU2OTNhMGNiZDA4MmIyMjBmMjU1ZDgyYWU3NGI3MS4uMTcx
NjFhOTVlNTg2MDNiNDRkMjllMTljMTlhMjc2M2M1MmUwNWFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmlj
b2RlL3VwbHVyYWxydWxlcy5oPgogCkBAIC01Myw2ICs1Myw5IEBAIGNsYXNzIEludGxQbHVyYWxS
dWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5G
TzsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNl
dE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNP
YmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBp
bml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpT
VmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3Vi
bGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKQEAgLTgwLDggKzgzLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUlu
dGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMg
eyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1T
aWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdU
eXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlw
ZSB7IFR5cGU6OkNhcmRpbmFsIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggZTEyZjQ4MTZjM2UxNDQyNTVjMWE0ZjUzMmEyODY3N2RkYjNk
MjU1Ni4uZTI2MjFlZDk0ZTU5ODQ5YTdhNmM4NzgwMGI1NWFkYzYwMDcyMjBkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTYsNiArNTYsNyBAQAog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5oPgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlIZWxwZXJzLmgiCkBAIC0zMDc2LDkgKzMwNzcsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
SlNHbG9iYWxPYgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bklDVVZlcnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewotICAgIFVWZXJzaW9u
SW5mbyB2ZXJzaW9uSW5mbzsKLSAgICB1X2dldFZlcnNpb24odmVyc2lvbkluZm8pOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmVyc2lvbkluZm9bMF0pKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSkpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzc2VydEVu
YWJsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzEyNjNiNTc1YzRlNDkwYjkxNjE4MjVhMGNmMTY1N2Ux
MWFiZGJhOC4uODQ1NmUzMGJiYWZlZGQ2OTcxYWVhMDYzYzA0OTAxNGVlY2IwNWMwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODAsNiArMTgwLDcgQEAK
IAkJRTM4RDZFMjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIy
RTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi87IH07CiAJCUUzOTJGQTI3MjJF
OTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8q
IFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgKi87IH07CiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3
NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNw
cCAqLzsgfTsKKwkJRTNCRTA5QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRTA5QTYyNEE1
ODU0NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovOyB9OwogCQlFNEEwQUQzOTFBOTYyNDU1
MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3Bw
ICovOyB9OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0Mx
QTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI2MUVEQzcy
NDA5Q0NDMTAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYg
LyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLzsgfTsKQEAgLTczMSw2ICs3MzIsNyBAQAogCQlF
MzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlVXNhZ2VDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBK
U1ZhbHVlTWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
VmFsdWVNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFG
QzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElDVUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NG
NzY5MDIxMTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFNjRGMEIyMjgxMzQyODAwMUU1NUI0IC8qIE5vbm1v
dmFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9ubW92YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI3Myw4ICsxMjc1LDggQEAKIAkJCQkwRjcwNzVGMzFGQkY1MzdBMDA0ODlB
RjAgLyogVGltaW5nU2NvcGUuaCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyog
VGlueUxSVUNhY2hlLmggKi8sCiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQ
dHJTZXQuaCAqLywKLQkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRlZFBy
b2Nlc3MuaCAqLywKIAkJCQk1MjFDQzZCMzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFBy
b2Nlc3MuY3BwICovLAorCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVk
UHJvY2Vzcy5oICovLAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5o
ICovLAogCQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJ
CQlFMzYwQzc2NDIxMjdCODVCMDBDOTBGMEUgLyogVW5hbGlnbmVkQWNjZXNzLmggKi8sCkBAIC0x
NDUyLDYgKzE0NTQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlBOEE0NzM1MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwICovLAorCQkJCUUz
QkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLywKIAkJCQk1MkIyMjhD
MTI0NThEQzgyMDA3NTNEOTEgLyogSUNVSGVscGVycy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBp
Y3U7CkBAIC0xNjc2LDYgKzE2NzksNyBAQAogCQkJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAv
KiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNEODE1MUE4
MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjVCNDRF
MjIxM0Q2MTYwMDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNC
RTA5QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0EwNTA5M0YxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMTc0Nyw3ICsxNzUxLDYgQEAKIAkJCQlBNUJBMTVGNTE4MjQz
NDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
REJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJv
Y2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyog
U3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQzMThBMUU4QzMwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1
MUE4MjVCMDA0MTIzRkYgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzY0LDYgKzE3
NjcsNyBAQAogCQkJCTUzMTFCRDVDMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0
aER5bmFtaWNDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTND
RDAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyMUNDNkI0
MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkNzFlYjI4MjM1NDllNWQ1ZGEwN2NiYWJh
OTRlOTQ2MTEwMWUyMmQuLmQyMjBlNmE4ODg2N2UxZWYxNDBkMGIwYzQ3ZTA5NTIwNjZkMGJlZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00OTksNiArNDk5LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgdW5pY29kZS9VVEY4Q29udmVyc2lvbi5jcHAKIAogICAgIHVuaWNvZGUvaWN1L0NvbGxh
dG9ySUNVLmNwcAorICAgIHVuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCiApCiAKIHNldChXVEZf
UFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApp
bmRleCBhOTA4ZGYzYmVhNjFmZmMyM2ViZGRiMzQ0Yzc1NmZjMmM4ZTg4Mjc3Li5mN2E0NzlhMGJh
MDcxZWYwNjg5YTBlMTIzMmZiZWI0NGE1ZDBiNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRl
cmFsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC00Nyw3ICs0OCw5IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbCBmaW5hbCB7CiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyBudWxscHRyIH07CiAgICAgfQogCi0gICAgY29uc3Qg
Y2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0
ZXJzOyB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0
d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVfdCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQogCiBwcml2YXRlOgog
ICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVy
cykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CmluZGV4IDhiZGM4YjBlZTE5YjMyY2Q1ZjA2ZmZkYzJjYTc3YWUzNWE2MWYzOGQuLmMyMmE4YWUz
NDQ2MWMzYjNjYzgwMmJmY2I1MzAxYTY2NzJiYzllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9M
Q2hhci5oPgpAQCAtNjgsNiArNjksNyBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBT
dHJpbmdWaWV3KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3
KGNvbnN0IGNoYXIqKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdW
aWV3IGVtcHR5KCk7CiAKQEAgLTM1Niw2ICszNTgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0
cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIGlu
aXRpYWxpemUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5n
dGgpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhBU0NJSUxpdGVyYWwgc3Ry
aW5nKQoreworICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7Cit9CisKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0lt
cGwmIHN0cmluZykKIHsKICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmYzZTEwY2Y0
NmY1OThiMzhmMWIwNDkyNjVmY2NlN2ZlODJjNzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaW5jbHVk
ZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91dmVybnVtLmg+CisKK25hbWVzcGFjZSBXVEYg
eworbmFtZXNwYWNlIElDVSB7CisKK3N0YXRpYyBjb25zdCBVVmVyc2lvbkluZm8mIHZlcnNpb24o
KQoreworICAgIHN0YXRpYyBVVmVyc2lvbkluZm8gdmVyc2lvbnMgeyB9OworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CisgICAgICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9ucyk7CisgICAgfSk7CisgICAgcmV0dXJuIHZl
cnNpb25zOworfQorCit1bnNpZ25lZCBtYWpvclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3Nl
cnQoMCA8IFVfTUFYX1ZFUlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzBdOwor
fQorCit1bnNpZ25lZCBtaW5vclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMSA8IFVf
TUFYX1ZFUlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzFdOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIFdURjo6SUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJz
LmgKaW5kZXggNzJhOTQzZTI1YTI0OWJmNTFmODQ0ZDQwY2I3ZDBmODVhNzIyMjkxOS4uMWFlMzEw
NGMzNGQ4NzBiMzY3MjBjZTViMDU4ODZmNjg5ZDhiYmMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuaApAQCAtMTA3LDcgKzEwNywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNvZGUgY2Fs
bEJ1ZmZlcgogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLX0KK25hbWVzcGFjZSBJQ1UgeworCit1
bnNpZ25lZCBtYWpvclZlcnNpb24oKTsKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpOworCit9IC8v
IG5hbWVzcGFjZSBJQ1UKK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3Ry
aW5nOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA0YTEyMTM1M2JiNDE0NTRmODQ4M2M2OTZmZWM3MmIzYjkyOGI5ZDc4Li5iMTEwYzU4MTk3
MjVmNTRkMjRjNTYyZDE0ZmIyZjgzZDkyM2Y0OTEwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI1
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAy
XSBVbmlmaWVkIEludGwuTnVtYmVyRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlh
bWw6CisKIDIwMjAtMDYtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBpbmNsdWRlZCBjb3B5IG9mIHN0cmVzcy9sbGludHRydWUuanMg
YWNjaWRlbnRhbGx5LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5
ZGI4NWNmNGUxNjRiOTRkZjEuLjIwZTVlNTM5OWEzYzFhYTk2N2RlN2E5MGM1ZGI1YTdjNWFjNjY1
MzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI4LDcgKzI4LDYgQEAgc2tpcDoKICAgICAtIEludGwu
RGF0ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5EaXNwbGF5
TmFtZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5p
ZmllZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9EYXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402895</attachid>
            <date>2020-06-26 13:15:44 -0700</date>
            <delta_ts>2020-06-26 22:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200626131544.patch</filename>
            <type>text/plain</type>
            <size>78276</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YmM5OTE0YWRhMzEzMGJlOWQ3ZTMzMzY3Nzk1OThiYTBhYmE0ZmUyLi42YzI3ZjhhMGI3MTViYjMy
NzI5MTYwNWFlYzIzZTQ5MGU0OGFlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VUZvcm1hdHRlZE51bWJlckRlbGV0ZXI6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAg
ICAgICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFz
dXJlVW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAg
KEpTQzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6Oldl
bGxGb3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3Jt
ZWRVbml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXQgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFy
dFR5cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1Bh
cnRzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFs
aXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAgICAg
KiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJzaW9u
KToKKwogMjAyMC0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjI2MzAzNSk6IHN0cmVzcy9nZXQtcHJvdG90eXBlLW9mLmpzIGJy
b2tlbiBvbiBzMzkweApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA0MjdiMDE2YjM5MzA4NzllY2VlMDczNDkyMzdjNjQ2NDY1ZjAy
OTkwLi4zNTFiMTc1ZDQ0MGM3MjA4MjRkYTA3NWY5YmZmNTFmNTE4MWUwMDM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDIwLTA2LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0VDTUEtNDAyXSBVbmlmaWVkIEludGwuTnVtYmVyRm9ybWF0IG1pc3Npbmcg
aW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDk3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1Zp
ZXcpOgorICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNV
Ojp2ZXJzaW9uKToKKyAgICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAo
V1RGOjpJQ1U6Om1pbm9yVmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhl
bHBlcnMuaDoKKwogMjAyMC0wNi0yNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGEgbmV3IHRlbXBsYXRlZCBzdHJpbmcgdHlwZSB0byBoZWxwIHdyaXRlIG1v
cmUgaWRpb21hdGljIHBhcnNpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4YzIyODBkYTUwODQzYTYzYmRkLi4wYjVkYjVjMjk5ZGJm
M2YxNTgzNzUyODBhYTNlMGFjY2YxYTM5N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTc4OSw2ICsxNzg5LDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNj
cmlwdEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1l
dGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2
RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2
RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQ
YXJhbXMuaCAqLzsgfTsKKwkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMu
aCAqLzsgfTsKIAkJRTMyNTk1NjQyMUZEQTJDOTAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLzsg
fTsKIAkJRTMyNUEzNjAyMjIxMTU5MDAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVBMzVG
MjIyMTE1OEEwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi87IH07CiAJCUUz
MjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEg
LyogWWFyckVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00OTQ0LDYgKzQ5NDUsNyBAQAogCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3
MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTbmlwcGV0UGFyYW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRM
U25pcHBldFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExTbmlwcGV0UGFyYW1zLmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZU
TFNuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25p
cHBldFBhcmFtcy5oOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAv
KiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNzIsNiArNzI3NCw3IEBACiAJCQkJQTFENzky
RjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLywKIAkJCQlBMUQ3OTJG
ODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywK
IAkJCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmggKi8sCisJCQkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmggKi8sCiAJCQkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8sCiAJCQkJQTEyQkJGRjMxQjA0NEE5ODAw
NjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovLApAQCAtOTc1NSw2ICs5NzU4LDcgQEAKIAkJCQlB
MUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
MjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cAppbmRleCBjMzhmZTk5ZTJmNGYwYTNkYjJmM2FiMTc5OTIyZWJhODM4YWEyOTM4Li5iYWRmNzc2
ZWUwNjYzZDM1YWUzYzhmMmJhNmY2ZjA4NjdhNTNhM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpAQCAtNDIsNiArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19p
bmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbgogCiBuYW1lc3BhY2Ug
SW50bE51bWJlckZvcm1hdEludGVybmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFu
dEV4dGVuc2lvbktleXNbMV0gPSB7ICJudSIgfTsKK2NvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKIH0KIAogc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CkBAIC00OSwxMSArNTEs
MjUgQEAgc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CiAgICAgc2l6ZV90IHNpemU7CiB9
OwogCisjaWYgSEFWRShJQ1VfVU5VTUYpCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVOdW1iZXJG
b3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqIG51bWJlckZvcm1h
dHRlcikgY29uc3QKK3sKKyAgICBpZiAobnVtYmVyRm9ybWF0dGVyKQorICAgICAgICB1bnVtZl9j
bG9zZShudW1iZXJGb3JtYXR0ZXIpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVGb3Jt
YXR0ZWROdW1iZXJEZWxldGVyOjpvcGVyYXRvcigpKFVGb3JtYXR0ZWROdW1iZXIqIGZvcm1hdHRl
ZE51bWJlcikgY29uc3QKK3sKKyAgICBpZiAoZm9ybWF0dGVkTnVtYmVyKQorICAgICAgICB1bnVt
Zl9jbG9zZVJlc3VsdChmb3JtYXR0ZWROdW1iZXIpOworfQorI2Vsc2UKIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCog
bnVtYmVyRm9ybWF0KSBjb25zdAogewogICAgIGlmIChudW1iZXJGb3JtYXQpCiAgICAgICAgIHVu
dW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKIH0KKyNlbmRpZgogCiBJbnRsTnVtYmVyRm9ybWF0KiBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
QEAgLTExOSw3ICsxMzUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRz
KGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVy
YXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcg
Y3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBo
YWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29y
cmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4K
LSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNb
XSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWdu
ZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAg
ICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE2OSwx
MzMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcm
IGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlr
ZSBJQ1U0Si4KK2NsYXNzIE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgTWVh
c3VyZVVuaXQoQVNDSUlMaXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsgfQor
CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zdWJUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAgICBB
U0NJSUxpdGVyYWwgbV9zdWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmll
cikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10gPSB7
CisgICAgICAgIHsgImFyZWEiX3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3Ms
ICJiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAgICAg
eyAidGVtcGVyYXR1cmUiX3MsICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywg
ImNlbnRpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwKKyAg
ICAgICAgeyAiYW5nbGUiX3MsICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1cmUi
X3MsICJmYWhyZW5oZWl0Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91bmNl
Il9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAidm9s
dW1lIl9zLCAiZ2FsbG9uIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0Il9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7ICJt
YXNzIl9zLCAiZ3JhbSJfcyB9LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9LAor
ICAgICAgICB7ICJkdXJhdGlvbiJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9z
LCAiaW5jaCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAorICAg
ICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywg
ImtpbG9ncmFtIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9LAor
ICAgICAgICB7ICJ2b2x1bWUiX3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9z
LCAibWVnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3MgfSwK
KyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9z
LCAibWlsZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlhbiJf
cyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAgIHsg
Imxlbmd0aCJfcywgIm1pbGxpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJt
aWxsaXNlY29uZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9LAor
ICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3Ms
ICJvdW5jZSJfcyB9LAorICAgICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwKKyAg
ICAgICAgeyAiZGlnaXRhbCJfcywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3Ms
ICJwb3VuZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAorICAg
ICAgICB7ICJtYXNzIl9zLCAic3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRl
cmFiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisgICAg
ICAgIHsgImR1cmF0aW9uIl9zLCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJ5
YXJkIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07CisK
KyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBsZVVu
aXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAgW10g
KGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRpZmll
cikgeworICAgICAgICAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFj
dGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVy
czgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVybiBX
VEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0LnN1
YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJZGVu
dGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAhPSBz
dGQ6OmVuZChzaW1wbGVVbml0cykpIHsKKyAgICAgICAgaWYgKFdURjo6Y29kZVBvaW50Q29tcGFy
ZShpdGVyYXRvci0+c3ViVHlwZSgpLmNoYXJhY3RlcnMoKSwgaXRlcmF0b3ItPnN1YlR5cGUoKS5s
ZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVu
Z3RoKCkpID09IDApCisgICAgICAgICAgICByZXR1cm4gKml0ZXJhdG9yOworICAgIH0KKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitjbGFzcyBXZWxsRm9ybWVkVW5pdCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJhdG9yKQorICAg
ICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICB7CisgICAgfQorCisgICAgV2VsbEZv
cm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJhdG9yLCBNZWFzdXJlVW5pdCBkZW5vbWluYXRvcikK
KyAgICAgICAgOiBtX251bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwgbV9kZW5vbWluYXRv
cihkZW5vbWluYXRvcikKKyAgICB7CisgICAgfQorCisgICAgTWVhc3VyZVVuaXQgbnVtZXJhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0b3I7IH0KKyAgICBPcHRpb25hbDxNZWFzdXJlVW5p
dD4gZGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlbm9taW5hdG9yOyB9Citwcml2YXRl
OgorICAgIE1lYXN1cmVVbml0IG1fbnVtZXJhdG9yOworICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBtX2Rlbm9taW5hdG9yOworfTsKKworc3RhdGljIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3
ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAg
ICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVudGlm
aWVyCisgICAgaWYgKGF1dG8gdW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1
bml0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBXZWxsRm9ybWVkVW5pdCh1bml0LnZhbHVl
KCkpOworCisgICAgLy8gSWYgdGhlIHN1YnN0cmluZyAiLXBlci0iIGRvZXMgbm90IG9jY3VyIGV4
YWN0bHkgb25jZSBpbiB1bml0SWRlbnRpZmllciwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0
byBwZXIgPSBTdHJpbmdWaWV3KCItcGVyLSJfcyk7CisgICAgYXV0byBwb3MgPSB1bml0SWRlbnRp
Zmllci5maW5kKHBlcik7CisgICAgaWYgKHBvcyA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcG9zMiA9IHVuaXRJZGVudGlmaWVyLmZpbmQo
cGVyLCBwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGlmIChwb3MyICE9IFdURjo6bm90Rm91bmQp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9m
IElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMgZmFsc2UsIHRo
ZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50aWZpZXIuc3Vi
c3RyaW5nKDAsIHBvcyk7CisgICAgYXV0byBudW1lcmF0b3JVbml0ID0gc2FuY3Rpb25lZFNpbXBs
ZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcik7CisgICAgaWYgKCFudW1lcmF0b3JVbml0KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1Nh
bmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcikgaXMgZmFsc2UsIHRoZW4g
cmV0dXJuIGZhbHNlLgorICAgIGF1dG8gZGVub21pbmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJz
dHJpbmcocG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IHNh
bmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcik7CisgICAgaWYgKCFkZW5v
bWluYXRvclVuaXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
V2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQudmFs
dWUoKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRp
YWxpemVudW1iZXJmb3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpT
VmFsdWUgb3B0aW9uc1ZhbHVlKQogewpAQCAtMTkxLDIwICszMzQsMjUgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKIAogICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKICAg
ICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRv
IGludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8gaW52YWxp
ZCBsb2NhbGUiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9udW1iZXJpbmdT
eXN0ZW0gPSByZXN1bHQuZ2V0KCJudSJfcyk7CiAKLSAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
c3R5bGUsIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5jeSIgfSwgInN0eWxlIG11c3Qg
YmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgImRl
Y2ltYWwiKTsKKyAgICAvLyBTZXROdW1iZXJGb3JtYXRVbml0T3B0aW9ucyhpbnRsT2JqZWN0LCBv
cHRpb25zKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2V0bnVtYmVyZm9y
bWF0dW5pdG9wdGlvbnMKKworICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVj
aW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiwgInVuaXQiIH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIFwiY3VycmVuY3lcIiwgb3IgXCJ1bml0XCIi
LCAiZGVjaW1hbCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIikKKyAgICBpZiAoc3R5bGVTdHJpbmcgPT0g
ImRlY2ltYWwiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6RGVjaW1hbDsKLSAgICBlbHNl
IGlmIChzdHlsZVN0cmluZyA9PSAicGVyY2VudCIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcg
PT0gInBlcmNlbnQiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6UGVyY2VudDsKLSAgICBl
bHNlIGlmIChzdHlsZVN0cmluZyA9PSAiY3VycmVuY3kiKQorICAgIGVsc2UgaWYgKHN0eWxlU3Ry
aW5nID09ICJjdXJyZW5jeSJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpDdXJyZW5jeTsK
KyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAidW5pdCJfcykKKyAgICAgICAgbV9zdHlsZSA9
IFN0eWxlOjpVbml0OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAK
QEAgLTIxMiw3ICszNjAsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1i
ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkg
ewogICAgICAgICBpZiAoY3VycmVuY3kubGVuZ3RoKCkgIT0gMyB8fCAhY3VycmVuY3kuaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpIHsKLSAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjdXJyZW5jeSBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KQEAgLTIyOSw2MCArMzc3LDI2OCBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogICAgICAgICBjdXJyZW5jeURpZ2l0cyA9IGNvbXB1dGVDdXJyZW5jeURpZ2l0
cyhjdXJyZW5jeSk7CiAgICAgfQogCi0gICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hbWUi
IH0sICJjdXJyZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIs
IG9yIFwibmFtZVwiIiwgInN5bWJvbCIpOworICAgIFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJp
bmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJu
YXJyb3dTeW1ib2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
ImNvZGVcIiwgXCJzeW1ib2xcIiwgXCJuYXJyb3dTeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3lt
Ym9sIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
bV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxh
eVN0cmluZyA9PSAiY29kZSIpCisgICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0g
ImNvZGUiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxh
eTo6Q29kZTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1i
b2wiKQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCJf
cykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpTeW1i
b2w7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSIpCisg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFycm93U3ltYm9sIl9z
KQorICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJv
d1N5bWJvbDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1l
Il9zKQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5h
bWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5p
bXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgU3RyaW5nIGN1cnJlbmN5U2lnblN0
cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIHsgInN0YW5kYXJkIiwgImFjY291bnRp
bmciIH0sICJjdXJyZW5jeVNpZ24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNj
b3VudGluZ1wiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdp
dHM7CisgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgICAgIGlmIChj
dXJyZW5jeVNpZ25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5j
eVNpZ24gPSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOworICAgICAgICBlbHNlIGlmIChjdXJyZW5j
eVNpZ25TdHJpbmcgPT0gImFjY291bnRpbmciX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2ln
biA9IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5j
eURpZ2l0cyA6IDA7CisgICAgU3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwgeyB9LCBu
dWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdDsKKyAgICBpZiAo
IXVuaXQuaXNOdWxsKCkpIHsKKyAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5p
dElkZW50aWZpZXIodW5pdCk7CisgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIG1fdW5pdCA9IHVuaXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBtdXN0IGJlIGEgc3RyaW5nIl9zKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1G
cmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIw
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICBTdHJpbmcgdW5pdERpc3BsYXlT
dHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVuaXREaXNwbGF5IiksIHsgInNob3J0IiwgIm5hcnJvdyIsICJs
b25nIiB9LCAidW5pdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiLCBcIm5hcnJvd1wi
LCBvciBcImxvbmdcIiIsICJzaG9ydCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM7CisgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgaWYgKHVu
aXREaXNwbGF5U3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1fdW5pdERpc3BsYXkg
PSBVbml0RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5n
ID09ICJuYXJyb3ciX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6
Ok5hcnJvdzsKKyAgICAgICAgZWxzZSBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gImxvbmciX3Mp
CisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6Okxvbmc7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIAotICAgIHVu
c2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaWYgKG1fc3R5bGUgPT0g
U3R5bGU6OkN1cnJlbmN5KQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0g
c3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCBjdXJyZW5jeURpZ2l0cyk7Ci0gICAgZWxz
ZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6UGVyY2VudCkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICBlbHNlCi0gICAgICAg
IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25E
aWdpdHMsIDN1KTsKKyAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0g
KG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICB1
bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQp
ID8gMCA6IDM7CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICBTdHJpbmcgbm90YXRpb25TdHJpbmcg
PSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIHsgInN0YW5kYXJkIiwgInNjaWVudGlmaWMiLCAiZW5n
aW5lZXJpbmciLCAiY29tcGFjdCIgfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwic3RhbmRh
cmRcIiwgXCJzY2llbnRpZmljXCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0XCIiLCAi
c3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlm
IChub3RhdGlvblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJ
bnRsTm90YXRpb246OlN0YW5kYXJkOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJz
Y2llbnRpZmljIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTY2llbnRp
ZmljOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJlbmdpbmVlcmluZyJfcykKKyAg
ICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc7CisgICAgZWxzZSBp
ZiAobm90YXRpb25TdHJpbmcgPT0gImNvbXBhY3QiX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJ
bnRsTm90YXRpb246OkNvbXBhY3Q7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAotICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRp
b25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhn
bG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQs
IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZp
Y2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBTdHJpbmcg
Y29tcGFjdERpc3BsYXkgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIHsgInNob3J0Iiwg
ImxvbmciIH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0XCIgb3IgXCJs
b25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgp
IHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEs
IDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAg
ICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
ID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIGlmIChtX25vdGF0aW9uID09IEludGxO
b3RhdGlvbjo6Q29tcGFjdCkgeworICAgICAgICBpZiAoY29tcGFjdERpc3BsYXkgPT0gInNob3J0
Il9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpTaG9y
dDsKKyAgICAgICAgZWxzZSBpZiAoY29tcGFjdERpc3BsYXkgPT0gImxvbmciX3MpCisgICAgICAg
ICAgICBtX2NvbXBhY3REaXNwbGF5ID0gQ29tcGFjdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIFRyaVN0
YXRlIHVzZUdyb3VwaW5nID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3Jv
dXBpbmcgIT0gVHJpU3RhdGU6OkZhbHNlOwogCisgICAgU3RyaW5nIHNpZ25EaXNwbGF5ID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJzaWduRGlzcGxheSIpLCB7ICJhdXRvIiwgIm5ldmVyIiwgImFsd2F5cyIsICJleGNl
cHRaZXJvIiB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJc
IiwgXCJhbHdheXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiLCAiYXV0byIpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHNpZ25EaXNwbGF5ID09ICJhdXRv
Il9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkF1dG87CisgICAgZWxz
ZSBpZiAoc2lnbkRpc3BsYXkgPT0gIm5ldmVyIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0g
U2lnbkRpc3BsYXk6Ok5ldmVyOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJhbHdheXMi
X3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6QWx3YXlzOworICAgIGVs
c2UgaWYgKHNpZ25EaXNwbGF5ID09ICJleGNlcHRaZXJvIl9zKQorICAgICAgICBtX3NpZ25EaXNw
bGF5ID0gU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm87CisgICAgZWxzZQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKworICAgIC8vIE9wdGlvbnMgYXJlIG9idGFpbmVkLiBDb25maWd1cmUg
Zm9ybWF0dGVyIGhlcmUuCisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICAvLyBDb25zdHJ1Y3Rp
bmcgSUNVIE51bWJlciBTa2VsZXRvbnMgdG8gY29uZmlndXJlIFVOdW1iZXJGb3JtYXR0ZXIuCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2Nz
L3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQKKworICAgIFN0cmlu
Z0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9zdHlsZSkgewor
ICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CisgICAgICAgIC8vIE5vIHNrZWxldG9uIGlzIG5lZWRl
ZC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKKyAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXJjZW50IHNjYWxlLzEwMCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeTogeworICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGN1cnJlbmN5LyIpOworICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKGN1cnJlbmN5KTsKKworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5p
Y29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1i
ZXJzL3NrZWxldG9ucy5tZCN1bml0LXdpZHRoCisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5jeURp
c3BsYXkpIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CisgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtaXNvLWNvZGUiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgorICAgICAgICAgICAgLy8gRGVmYXVsdCBvcHRpb24uIERvIG5vdCBzcGVjaWZ5IHVuaXQtd2lk
dGguCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5h
cnJvd1N5bWJvbDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
dW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1
cnJlbmN5RGlzcGxheTo6TmFtZToKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFN0eWxlOjpVbml0OiB7Cisg
ICAgICAgIC8vIFRoZSBtZWFzdXJlLXVuaXQgc3RlbSB0YWtlcyBvbmUgcmVxdWlyZWQgb3B0aW9u
OiB0aGUgdW5pdCBpZGVudGlmaWVyIG9mIHRoZSB1bml0IHRvIGJlIGZvcm1hdHRlZC4KKyAgICAg
ICAgLy8gVGhlIGZ1bGwgdW5pdCBpZGVudGlmaWVyIGlzIHJlcXVpcmVkOiBib3RoIHRoZSB0eXBl
IGFuZCB0aGUgc3VidHlwZSAoZm9yIGV4YW1wbGUsIGxlbmd0aC1tZXRlcikuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQKKyAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtZWFzdXJlLXVuaXQvIik7CisgICAgICAgIGF1
dG8gbnVtZXJhdG9yVW5pdCA9IHdlbGxGb3JtZWRVbml0LT5udW1lcmF0b3IoKTsKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUoKSwgJy0nLCBudW1lcmF0
b3JVbml0LnN1YlR5cGUoKSk7CisgICAgICAgIGlmIChhdXRvIGRlbm9taW5hdG9yVW5pdFZhbHVl
ID0gd2VsbEZvcm1lZFVuaXQtPmRlbm9taW5hdG9yKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZGVu
b21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUoKSwg
Jy0nLCBkZW5vbWluYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAg
ICAgc3dpdGNoIChtX3VuaXREaXNwbGF5KSB7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6OlNo
b3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdp
ZHRoLXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxh
eTo6TmFycm93OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1
bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5p
dERpc3BsYXk6Okxvbmc6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFy
c2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13aWR0aAorICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgaW50ZWdlci13aWR0aC8iKTsKKyAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjcpID8gJyonIDogJysnKTsgLy8g
UHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdU
eXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAg
ICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2Rv
Y3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1w
cmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25p
ZmljYW50RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAg
ICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNl
cmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNub3RhdGlvbgorICAgIHN3
aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2NpZW50aWZpYyIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJpbmciKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHN3aXRjaCAobV9jb21w
YWN0RGlzcGxheSkgeworICAgICAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1zaG9ydCIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6Okxvbmc6Cisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3QtbG9uZyIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbi1kaXNw
bGF5CisgICAgLy8gQ3VycmVuY3lTaWduJ3MgYWNjb3VudGluZyBpcyBhIHBhcnQgb2YgU2lnbkRp
c3BsYXkgaW4gSUNVLgorICAgIGJvb2wgdXNlQWNjb3VudGluZyA9IChtX3N0eWxlID09IFN0eWxl
OjpDdXJyZW5jeSAmJiBtX2N1cnJlbmN5U2lnbiA9PSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmcp
OworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkF1
dG86CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmciKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWF1dG8iKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1uZXZlciIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5n
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291
bnRpbmctYWx3YXlzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGlu
Zy1leGNlcHQtemVybyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tZXhjZXB0LXplcm8iKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9mZiIpOworCisgICAgU3RyaW5nIHNrZWxldG9uID0gc2tl
bGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgZGF0YUxvZ0xuSWYoSW50bE51bWJlckZvcm1h
dEludGVybmFsOjp2ZXJib3NlLCBtX2xvY2FsZSk7CisgICAgZGF0YUxvZ0xuSWYoSW50bE51bWJl
ckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBza2VsZXRvbik7CisgICAgU3RyaW5nVmlldyBza2Vs
ZXRvblZpZXcoc2tlbGV0b24pOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0
ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2Nh
bGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZp
ZXcubGVuZ3RoKCksIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVO
VU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpEZWNp
bWFsOgpAQCAtMjk5LDY1ICs2NTUsODYgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAg
ICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgICAgIHN0eWxlID0gVU5V
TV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlz
cGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAg
ICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRy
LCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxp
emUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICB1bnVtX3NldFRleHRBdHRyaWJ1
dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fQ1VSUkVOQ1lfQ09ERSwgU3RyaW5nVmlldyht
X2N1cnJlbmN5KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgbV9jdXJyZW5jeS5sZW5ndGgoKSwg
JnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIW1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21p
bmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAg
fSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWdu
aWZpY2FudERpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwogICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRf
RElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0
cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMs
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQi
X3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNlR3JvdXBpbmcpOwogICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1JPVU5ESU5HX01P
REUsIFVOVU1fUk9VTkRfSEFMRlVQKTsKKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewot
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
VmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VOVU1GKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9y
bWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzQ1LDI1
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVU5VTUYpCisgICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0dGVyKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsK
KyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251
bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRl
ZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVm
ZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4i
X3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1i
ZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxw
dHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwog
fQogCkBAIC0zODQsNiArNzc2LDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0
eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gInBlcmNlbnQiX3M7CiAgICAg
Y2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAg
Y2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CkBA
IC0zOTYsNiArNzkwLDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5
RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICAgICAgcmV0dXJu
ICJjb2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgIHJl
dHVybiAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6
CisgICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQpAQCAtNDAzLDYgKzc5
OSw3NiBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3Ry
aW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3Ry
aW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKG5vdGF0aW9uKSB7Cisg
ICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJk
Il9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgICAgICByZXR1cm4g
InNjaWVudGlmaWMiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAg
ICAgICByZXR1cm4gImVuZ2luZWVyaW5nIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21w
YWN0OgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlM
aXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24g
Y3VycmVuY3lTaWduKQoreworICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CisgICAgY2FzZSBD
dXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9zOworICAg
IGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAgICByZXR1cm4gImFjY291bnRp
bmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVu
aXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQoreworICAgIHN3aXRjaCAo
dW5pdERpc3BsYXkpIHsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0
dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgIHJl
dHVybiAibmFycm93Il9zOworICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6CisgICAgICAgIHJl
dHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZv
cm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkp
Cit7CisgICAgc3dpdGNoIChjb21wYWN0RGlzcGxheSkgeworICAgIGNhc2UgQ29tcGFjdERpc3Bs
YXk6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgQ29tcGFjdERp
c3BsYXk6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitB
U0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3Bs
YXkgc2lnbkRpc3BsYXkpCit7CisgICAgc3dpdGNoIChzaWduRGlzcGxheSkgeworICAgIGNhc2Ug
U2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgcmV0dXJuICJuZXZlciJfczsKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpBbHdheXM6CisgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOworICAgIGNhc2Ug
U2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVt
YmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVy
Rm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKIHsKQEAgLTQxNCwxNiArODgwLDI2IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0Ojpy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKICAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwganNOb250cml2
aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIpLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5RGlzcGxheSkp
KTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lTaWdu
U3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiks
IGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRz
IiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIEFTU0VSVChtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiks
IGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOworICAgIGlmIChtX25vdGF0aW9uID09
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOworICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25E
aXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWdu
RGlzcGxheSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtNDMyLDcgKzkwOCw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVu
Y3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsK
IH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlLCBk
b3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVU5VTV9JTlRF
R0VSX0ZJRUxEOgpAQCAtNDQ1LDYgKzkyMSwxMiBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRU
eXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuICJmcmFjdGlvbiJfczsKICAgICBjYXNlIFVOVU1fREVDSU1BTF9TRVBBUkFUT1Jf
RklFTEQ6CiAgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05F
TlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9uZW50U2VwYXJhdG9yIl9zOwor
ICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9u
ZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9GSUVMRDoKKyAgICAgICAg
cmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CiAgICAgY2FzZSBVTlVNX0dST1VQSU5HX1NFUEFS
QVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJncm91cCJfczsKICAgICBjYXNlIFVOVU1fQ1VS
UkVOQ1lfRklFTEQ6CkBAIC00NTIsMTMgKzkzNCwxNiBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHBh
cnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKICAg
ICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKICAgICAgICAgcmV0dXJuICJwZXJjZW50U2lnbiJf
czsKICAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/
ICJtaW51c1NpZ24iX3MgOiAicGx1c1NpZ24iX3M7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQodmFsdWUpID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKKyNpZiBIQVZFKElDVV9V
TlVNRikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEOgorICAgICAgICByZXR1cm4g
InVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1RfRklFTEQ6CisgICAgICAgIHJldHVybiAi
Y29tcGFjdCJfczsKKyNlbmRpZgogICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNh
dXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlv
bnMuCiAgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBr
bm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCiAgICAgY2FzZSBV
TlVNX1BFUk1JTExfRklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoK
LSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05F
TlRfRklFTEQ6CiAgICAgLy8gQW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1h
dEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQu
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwpAQCAtNDY2LDcgKzk1
MSw3IEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZp
ZWxkcyBmaWVsZCwgZG91YmxlIHZhbHVlKQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAot
dm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwg
VUZpZWxkUG9zaXRpb25JdGVyYXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmlu
ZyogdW5pdCkKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvciwg
SlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC01MDAsNyArOTg1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50
ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgYXV0byBm
aWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwogICAgICAgICB3aGlsZSAoY3Vy
cmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0g
ZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFy
dFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBq
c1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUp
LCB2YWx1ZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxG
aWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CiAgICAgICAgIGF1
dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3Vy
cmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CkBAIC01MTUsMjAgKzEwMDAsMzgg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZp
ZWxkSXRyID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRv
ciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwogCiAgICAgVmVj
dG9yPFVDaGFyLCAzMj4gcmVzdWx0OworI2lmIEhBVkUoSUNVX1VOVU1GKQorICAgIEFTU0VSVCht
X251bWJlckZvcm1hdHRlcik7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8g
Zm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3Jt
YXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0
ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3Rh
dHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBm
b3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJlc3VsdCk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdl
dCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisjZW5kaWYKIAog
ICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAKQEAgLTUzNiw3ICsxMDM5
LDcgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWwKICAgICBpZiAoIXBhcnRzKQogICAgICAgICBy
ZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAg
Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdFN0cmluZywg
ZmllbGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBtX3N0eWxlLCB2YWx1ZSwgcmVzdWx0U3RyaW5nLCBmaWVsZEl0ci5nZXQoKSwgcGFy
dHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICByZXR1cm4g
cGFydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmgKaW5kZXggNDMwNGIyMmE4YzZhNTExZjc0ZTJiZGNiMDUzODhkNWI2NWI3MzQ3Ni4uM2Q1
Y2UxMGM4ZmU1YmY0ZWI3OTUyNzE4ZGE4ZmIwYjk0NmY5OWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMjksMTAgKzI5LDI1
IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KIAor
I2lmICFkZWZpbmVkKEhBVkVfSUNVX1VOVU1GKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBV
TlVNX01FQVNVUkVfVU5JVF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBV
X0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VTlVNRiAxCisj
ZW5kaWYKKyNlbmRpZgorCisjaWYgSEFWRShJQ1VfVU5VTUYpCisjaW5jbHVkZSA8dW5pY29kZS91
bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpT
Qm91bmRGdW5jdGlvbjsKIAorZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7
IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07Citl
bnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgU2NpZW50aWZpYywg
RW5naW5lZXJpbmcsIENvbXBhY3QgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lk
IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwg
SlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25l
ZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiBjbGFzcyBJ
bnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwpAQCAtNjQsNyArNzksMTQgQEAg
Y2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVu
Y3Rpb24qKTsKIAotICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3IqLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKKyAgICBlbnVt
IGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5LCBVbml0
IH07CisKKyAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmpl
Y3QqLCBTdHlsZSwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRp
b25JdGVyYXRvciosIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9y
bWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKKyAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIG5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgSW50bE51
bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNzMsMjIgKzk1LDM5IEBAIGNsYXNzIElu
dGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpOwog
Ci0gICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJy
ZW5jeSB9OwotICAgIGVudW0gY2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUs
IFN5bWJvbCwgTmFtZSB9OwotCi0gICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKLSAg
ICAgICAgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKLSAgICB9OworICAg
IGVudW0gY2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJvbCwgTmFy
cm93U3ltYm9sLCBOYW1lIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90
IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKKyAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDog
dWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIENvbXBhY3RE
aXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlz
cGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CiAKICAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOworICAgIHN0
YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbik7CisgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CisgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7
CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7
CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworI2lm
IEhBVkUoSUNVX1VOVU1GKQorICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciB7Cisg
ICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0dGVyKikgY29uc3Q7CisgICAgfTsK
KyAgICBzdHJ1Y3QgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVUZvcm1hdHRlZE51bWJlciopIGNvbnN0OworICAgIH07CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZv
cm1hdHRlcjsKKyNlbHNlCisgICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKKyAgICAg
ICAgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKKyAgICB9OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1i
ZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICBTdHJpbmcgbV9u
dW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3VycmVuY3k7CisgICAgU3RyaW5nIG1fdW5p
dDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2ln
bmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11
bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyArMTM1LDEzIEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQg
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0
eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5Owor
ICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKKyAgICBVbml0RGlzcGxheSBtX3VuaXRE
aXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CisgICAgSW50bE5v
dGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CisgICAgU2lnbkRp
c3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07Cisg
ICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRmNTlkNGFkNzI1YjgxMzk2YWUwZDNkZjM5OTNlZDE1MWU0MzcyNmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyAgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4K
K3ZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxUeXBlKiBpbnRsSW5zdGFuY2UsIEpTT2JqZWN0KiBvcHRpb25zLCB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5p
bXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bUZyYWN0aW9uRGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0
aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlv
bnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRp
b25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11
bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5p
bXVtSW50ZWdlckRpZ2l0czsKKworICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwg
bWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1h
eGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEs
IDIxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25E
aWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZh
dWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwg
MjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNBY3R1YWxEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNBY3R1YWxEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsK
KyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6
OkNvbXBhY3RSb3VuZGluZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGxJbnN0
YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsK
KyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNjNTNiOGQ1YTZjMWY1NzZmLi4zNDNh
NDc0M2ZkYzQ3ZDQ1ODA5YjJiNDg3NmIyZWUxNzkyMTkxMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKIAor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rv
ci5oIgpAQCAtMTI1LDM0ICsxMjYsOCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6
ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmlu
ZyA9PSAib3JkaW5hbCIgPyBUeXBlOjpPcmRpbmFsIDogVHlwZTo6Q2FyZGluYWw7CiAKLSAgICB1
bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJE
aWdpdHMiKSwgMSwgMjEsIDEpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9i
YWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50
ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM7Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3Rk
OjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUZy
YWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11
bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIEpTVmFsdWUgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBKU1ZhbHVlIG1heGltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAg
ICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7Ci0gICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAg
bV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZv
cm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxl
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKQEAgLTE2MSwxNCArMTM2LDIwIEBA
IHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1
dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRy
dWUpOwotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1
ZSgpKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQo
KSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdp
dHM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVN
X1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1
dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251
bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1T
aWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTE5MSwxMSArMTcyLDE4IEBAIEpTT2JqZWN0
KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwi
X3MpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGln
aXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9u
RGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cy52YWx1ZSgpKSk7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlciht
X21heGltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5k
aW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0
cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVy
KG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0
cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IGIwMTVmZTgy
YTBlNjkzYTBjYmQwODJiMjIwZjI1NWQ4MmFlNzRiNzEuLjE3MTYxYTk1ZTU4NjAzYjQ0ZDI5ZTE5
YzE5YTI3NjNjNTJlMDVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5j
bHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4K
IApAQCAtNTMsNiArNTMsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBERUNMQVJFX0lORk87CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwogICAg
IEpTVmFsdWUgc2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKSBjb25zdDsKICAg
ICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CkBAIC04
MCw4ICs4Myw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9Owog
ICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgdW5zaWduZWQgbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAw
IH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzIH07CiAgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpDYXJkaW5hbCB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCA5MWIxYmZhMTQyNTg5MWY3YzNjODU0NGEyYjc0
OTgwMzBmN2M0NmU3Li43ZTk2NTljNzVhNjU1NTcwNDI5MWU5NjkzNzlkNmMwNjk2NGY0YWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3ViCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICB9CiAKLSAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGds
b2JhbE9iamVjdCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBh
cnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAg
ICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
SW50bE51bWJlckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1i
ZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0
KS50b1N0cmluZygpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5k
ZXggZTEyZjQ4MTZjM2UxNDQyNTVjMWE0ZjUzMmEyODY3N2RkYjNkMjU1Ni4uZTI2MjFlZDk0ZTU5
ODQ5YTdhNmM4NzgwMGI1NWFkYzYwMDcyMjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5n
dWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJz
LmgiCkBAIC0zMDc2LDkgKzMwNzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoSlNHbG9iYWxPYgogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklDVVZlcnNpb24oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewotICAgIFVWZXJzaW9uSW5mbyB2ZXJzaW9uSW5mbzsK
LSAgICB1X2dldFZlcnNpb24odmVyc2lvbkluZm8pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodmVyc2lvbkluZm9bMF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSkpOwogfQogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzc2VydEVuYWJsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzEyNjNiNTc1YzRlNDkwYjkxNjE4MjVhMGNmMTY1N2UxMWFiZGJhOC4uODQ1NmUzMGJi
YWZlZGQ2OTcxYWVhMDYzYzA0OTAxNGVlY2IwNWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODAsNiArMTgwLDcgQEAKIAkJRTM4RDZFMjcxRjU1MjJF
MzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJp
bmdCdWlsZGVySlNPTi5jcHAgKi87IH07CiAJCUUzOTJGQTI3MjJFOTJCRkYwMEVDREM3MyAvKiBS
ZXNvdXJjZVVzYWdlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2Nv
YS5jcHAgKi87IH07CiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9j
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMy
QkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLzsgfTsKKwkJRTNCRTA5
QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRTA5QTYyNEE1ODU0NTAwOURGMkI0IC8qIElD
VUhlbHBlcnMuY3BwICovOyB9OwogCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQlFNEEwQUQz
RDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8q
IFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI2MUVEQzcyNDA5Q0NDMTAwMUVGRTM2IC8q
IFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0Nv
Y29hLmNwcCAqLzsgfTsKQEAgLTczMSw2ICs3MzIsNyBAQAogCQlFMzkyRkEyNjIyRTkyQkZGMDBF
Q0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc291cmNlVXNhZ2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUyMDA3RDdFNzYgLyog
SlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVl
TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkUwOUE2MjRBNTg1NDUw
MDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElDVUhlbHBlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5MDIxMTVENkJBMDA5MURF
NDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNFNjRGMEIyMjgxMzQyODAwMUU1NUI0IC8qIE5vbm1vdmFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTm9ubW92YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3Myw4
ICsxMjc1LDggQEAKIAkJCQkwRjcwNzVGMzFGQkY1MzdBMDA0ODlBRjAgLyogVGltaW5nU2NvcGUu
aCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8s
CiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQuaCAqLywKLQkJCQky
RDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywKIAkJCQk1
MjFDQzZCMzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwICovLAorCQkJ
CTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5oICovLAogCQkJ
CTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAogCQkJCTgzRkJBOTMx
MTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlFMzYwQzc2NDIxMjdCODVC
MDBDOTBGMEUgLyogVW5hbGlnbmVkQWNjZXNzLmggKi8sCkBAIC0xNDUyLDYgKzE0NTQsNyBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEE0NzM1MDE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwICovLAorCQkJCUUzQkUwOUE2MjRBNTg1NDUwMDlE
RjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLywKIAkJCQk1MkIyMjhDMTI0NThEQzgyMDA3NTNEOTEg
LyogSUNVSGVscGVycy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpY3U7CkBAIC0xNjc2LDYgKzE2
NzksNyBAQAogCQkJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGlt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNEODE1MUE4MjVCMDA0MTIzRkYgLyogSGFz
aFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjVCNDRFMjIxM0Q2MTYwMDRCN0FBNyAv
KiBIZXhOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCRTA5QTcyNEE1ODU0RDAwOURG
MkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwNTA5M0YxRkI5REND
NTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTNBMzJCQzQx
RkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTc0Nyw3ICsxNzUxLDYgQEAKIAkJCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3Ry
aW5nSW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5OTNF
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUy
MUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQzMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4MjVCMDA0MTIzRkYgLyog
c3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzY0LDYgKzE3NjcsNyBAQAogCQkJCTUzMTFC
RDVDMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAwNDg5QUYwIC8qIFRpbWlu
Z1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAv
KiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5NTIwQ0NB
Q0U5MDBBMDNEQ0QgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVF
NzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5
NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CmluZGV4IGVkNzFlYjI4MjM1NDllNWQ1ZGEwN2NiYWJhOTRlOTQ2MTEwMWUyMmQuLmQy
MjBlNmE4ODg2N2UxZWYxNDBkMGIwYzQ3ZTA5NTIwNjZkMGJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CkBAIC00OTksNiArNDk5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgdW5pY29kZS9VVEY4
Q29udmVyc2lvbi5jcHAKIAogICAgIHVuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAorICAgIHVu
aWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCiApCiAKIHNldChXVEZfUFJJVkFURV9JTkNMVURFX0RJ
UkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAppbmRleCBhOTA4ZGYzYmVhNjFm
ZmMyM2ViZGRiMzQ0Yzc1NmZjMmM4ZTg4Mjc3Li5mN2E0NzlhMGJhMDcxZWYwNjg5YTBlMTIzMmZi
ZWI0NGE1ZDBiNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJh
bC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00Nyw3ICs0
OCw5IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbCBmaW5hbCB7CiAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwgeyBudWxscHRyIH07CiAgICAgfQogCi0gICAgY29uc3QgY2hhciogY2hhcmFjdGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisgICAgY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IExD
aGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBU0NJSUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMo
Y2hhcmFjdGVycykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDhiZGM4YjBlZTE5
YjMyY2Q1ZjA2ZmZkYzJjYTc3YWUzNWE2MWYzOGQuLmMyMmE4YWUzNDQ2MWMzYjNjYzgwMmJmY2I1
MzAxYTY2NzJiYzllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUxpdGVy
YWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q29udmVyc2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgpAQCAtNjgsNiAr
NjksNyBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqKTsKICAg
ICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFN0cmluZ1Zp
ZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVtcHR5KCk7CiAKQEAg
LTM1Niw2ICszNTgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIGluaXRpYWxpemUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOwogfQogCitpbmxpbmUg
U3RyaW5nVmlldzo6U3RyaW5nVmlldyhBU0NJSUxpdGVyYWwgc3RyaW5nKQoreworICAgIGluaXRp
YWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Cit9CisKIGlubGlu
ZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAg
ICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmYzZTEwY2Y0NmY1OThiMzhmMWIwNDkyNjVm
Y2NlN2ZlODJjNzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8dW5pY29kZS91dmVybnVtLmg+CisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIElDVSB7
CisKK3N0YXRpYyBjb25zdCBVVmVyc2lvbkluZm8mIHZlcnNpb24oKQoreworICAgIHN0YXRpYyBV
VmVyc2lvbkluZm8gdmVyc2lvbnMgeyB9OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIHVfZ2V0VmVy
c2lvbih2ZXJzaW9ucyk7CisgICAgfSk7CisgICAgcmV0dXJuIHZlcnNpb25zOworfQorCit1bnNp
Z25lZCBtYWpvclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMCA8IFVfTUFYX1ZFUlNJ
T05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzBdOworfQorCit1bnNpZ25lZCBtaW5v
clZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMSA8IFVfTUFYX1ZFUlNJT05fTEVOR1RI
KTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzFdOworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdURjo6
SUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKaW5kZXggNzJhOTQzZTI1
YTI0OWJmNTFmODQ0ZDQwY2I3ZDBmODVhNzIyMjkxOS4uMWFlMzEwNGMzNGQ4NzBiMzY3MjBjZTVi
MDU4ODZmNjg5ZDhiYmMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3Uv
SUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMu
aApAQCAtMTA3LDcgKzEwNywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNvZGUgY2FsbEJ1ZmZlcgogICAgIHJldHVy
biBzdGF0dXM7CiB9CiAKLX0KK25hbWVzcGFjZSBJQ1UgeworCit1bnNpZ25lZCBtYWpvclZlcnNp
b24oKTsKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpOworCit9IC8vIG5hbWVzcGFjZSBJQ1UKK30g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0YTEyMTM1M2JiNDE0
NTRmODQ4M2M2OTZmZWM3MmIzYjkyOGI5ZDc4Li44MDg0NmMxMWE0MDllMzE0NDgzMDYyNjkwMmNh
NWNmYTczZWU2ZjNiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI2ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBVbmlmaWVkIEludGwuTnVt
YmVyRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDYtMjQg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBpbmNsdWRlZCBjb3B5IG9mIHN0cmVzcy9sbGludHRydWUuanMgYWNjaWRlbnRhbGx5LgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNmNGUxNjRiOTRkZjEu
LjIwZTVlNTM5OWEzYzFhYTk2N2RlN2E5MGM1ZGI1YTdjNWFjNjY1MzggMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKQEAgLTI4LDcgKzI4LDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZnJh
Y3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5EaXNwbGF5TmFtZXMKICAgICAtIEludGwu
TGlzdEZvcm1hdAotICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAogICAgIC0gSW50bC5T
ZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9EYXRhVmlldy9wcm90b3R5
cGUvZ2V0QmlnSW50NjQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402944</attachid>
            <date>2020-06-26 22:28:22 -0700</date>
            <delta_ts>2020-06-27 00:19:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200626222821.patch</filename>
            <type>text/plain</type>
            <size>89574</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li40OTdkNjM0ZDYwM2VmMDQ3
Yzg0ZDA0MTRlOThiY2IxYmQ0ZDBlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNzaW5n
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpV
Q29sbGF0b3JEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpVRGF0ZUZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUN1cnJlbmN5RGlnaXRzKToKKyAgICAgICAgKEpTQzo6
TWVhc3VyZVVuaXQ6Ok1lYXN1cmVVbml0KToKKyAgICAgICAgKEpTQzo6TWVhc3VyZVVuaXQ6OnR5
cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpNZWFzdXJlVW5pdDo6c3ViVHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OnNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OldlbGxGb3JtZWRVbml0OjpXZWxsRm9ybWVkVW5pdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpudW1lcmF0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5p
dDo6ZGVub21pbmF0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjp3ZWxsRm9ybWVkVW5pdElkZW50
aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OnBhcnRUeXBlU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFs
KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpv
cGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAg
ICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6SW50bEZpZWxkSXRlcmF0b3IpOgorICAgICAgICAo
SlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQ
bHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRp
b25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50bFBs
dXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlVFbnVtZXJhdGlvbkRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRl
cjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaDoKKyAgICAg
ICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJz
aW9uKToKKwogMjAyMC0wNi0yNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEluaXRpYWxpemluZyB0aGUgbWFpbiB0aHJlYWQgc2hvdWxkIGluaXRpYWxpemUg
dGhlIG1haW4gcnVuIGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGZkMDU4ZTgzYjg2ZjY1ZjEwMjU2OGY3M2YyMWUwOWE1
OTdiYzcxOC4uNDM1ZjQxMWMxZDE5MjZiMjBhZTZlYzliODY5NjkyYWFkYTRjNDEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gVW5pZmllZCBJbnRsLk51bWJlckZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL3RleHQvQVNDSUlMaXRlcmFsLmg6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpTdHJp
bmdWaWV3KToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmguCisgICAgICAgIChXVEY6
OklDVTo6dmVyc2lvbik6CisgICAgICAgIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKToKKyAgICAg
ICAgKFdURjo6SUNVOjptaW5vclZlcnNpb24pOgorICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9J
Q1VIZWxwZXJzLmg6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgwZGE1MDg0M2E2M2JkZC4uMGI1ZGI1
YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUzMjAxQzFFMUY4RTgyNEMwMDc2QTAz
MiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTExREE2
NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMyMkU1QTcxREE2
NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExT
bmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkwMDhFREM5QyAvKiBSZWdFeHBHbG9i
YWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVz
LmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oICovOyB9
OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkExRkU5MzBBNDAw
RURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcgQEAKIAkJRTMyMkU1QTExREE2NDQz
NTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0gZGZnL0RGR1NuaXBwZXRQYXJhbXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTQxREE2NDRBNDAwNkU3NzA5
IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjJFNUE1MURBNjQ0QTQwMDZFNzcw
OSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1OTU2MzIxRkRBMkM4MDA4
RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUgLyogQ2xhc3NJ
bmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjcyLDYgKzcyNzQsNyBAQAogCQkJ
CUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCiAJCQkJ
QTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVt
YmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBMUQ3OTJGQjFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUExMkJCRkYzMUIw
NDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKQEAgLTk3NTUsNiArOTc1OCw3IEBA
CiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMEND
N0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RjFCNDVBMzYw
MDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
CmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYxM2I2OGFlMzBhZTkuLjViOGJlYWMy
OTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29uc3RleHByIHNpemVfdCBjYXNlRmly
c3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVyaWNJbmRleCA9IDI7CiB9CiAKLXZv
aWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVDb2xsYXRvciog
Y29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9yKQotICAgICAgICB1Y29sX2Nsb3Nl
KGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFwKSkgSW50bENv
bGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1YmQ2YjczZDEzMDNlOWYyNzQzZjIy
ZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVkNzA5ZDMwNWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtMjYsOCArMjYsOCBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgotCi1zdHJ1Y3QgVUNvbGxh
dG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03NCw5ICs3NCw3IEBAIGNs
YXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBl
bnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJhc2UsIEFjY2VudCwgQ2FzZSwgVmFy
aWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDogdWludDhfdCB7IFVwcGVyLCBMb3dl
ciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JEZWxldGVyIHsKLSAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVUNvbGxh
dG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47CiAKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNlbnNp
dGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4
YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVlZjI4ODllMjVhZjZlYTU0ODFiODYw
MDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYgQEAgY29uc3RleHByIHNpemVfdCBo
b3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWJlcmluZ1N5c3RlbUluZGV4
ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKLXsKLSAgICBpZiAoZGF0
ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKLX0KLQogSW50bERhdGVU
aW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bERhdGVU
aW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5ZDI2NzFjODljMjRhMDYyNzYzYmVj
Y2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2ODMwNjk5ZWZlNzE5NTQzYWExMGNm
Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVs
cGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksOSArODAsNyBAQCBjbGFzcyBJbnRs
RGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51
bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKICAg
ICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3QgeyBOb25lLCBTaG9ydCwgTG9uZyB9
OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0
b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVURhdGVGb3JtYXRE
ZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAogICAgIHZvaWQgc2V0Rm9ybWF0c0Zy
b21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdl
ZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYzYWIxNzk5
MjJlYmE4MzhhYTI5MzguLmYzNjdiZTc3Yzk5MTBmMTYwOWYxZTY3ZjBiMzA5N2JmY2M4MjAxZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgog
CiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0Myw3IEBAIGNvbnN0IENsYXNzSW5m
byBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogY29uc3Rl
eHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworY29u
c3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51bWJlckZvcm1h
dEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9ybWF0RmllbGQg
ewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpVTnVtYmVy
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNv
bnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJG
b3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Pih2bS5o
ZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTExOSw3ICsxMTUsNyBA
QCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3Vy
cmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3VycmVuY3lEaWdp
dHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kgYW5kIGZ1bmRz
IGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNvZGUsCiAgICAg
Ly8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUg
Y3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6OnBhaXI8Y29u
c3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlub3JV
bml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJRiIsIDAgfSwK
ICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0OSwxMzMgQEAgc3RhdGljIHVuc2ln
bmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQogICAgIHJl
dHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4KK2NsYXNzIE1l
YXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgTWVhc3VyZVVuaXQoQVNDSUlMaXRl
cmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQor
ICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsgfQorCisgICAgY29uc3RleHByIEFT
Q0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdWJUeXBlOyB9CisKK3By
aXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAgICBBU0NJSUxpdGVyYWwgbV9zdWJU
eXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAgICBzdGF0aWMg
Y29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10gPSB7CisgICAgICAgIHsgImFyZWEi
X3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJiaXQiX3MgfSwKKyAgICAg
ICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1cmUiX3Ms
ICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImNlbnRpbWV0ZXIiX3MgfSwK
KyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwKKyAgICAgICAgeyAiYW5nbGUiX3Ms
ICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1cmUiX3MsICJmYWhyZW5oZWl0Il9z
IH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91bmNlIl9zIH0sCisgICAgICAgIHsg
Imxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAiZ2FsbG9uIl9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0Il9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAiZ3JhbSJfcyB9
LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9LAorICAgICAgICB7ICJkdXJhdGlv
biJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiaW5jaCJfcyB9LAorICAg
ICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9z
LCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgImtpbG9ncmFtIl9zIH0sCisg
ICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUi
X3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWlsZSJfcyB9LAorICAg
ICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlhbiJfcyB9LAorICAgICAgICB7ICJ2
b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGxp
bWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJtaWxsaXNlY29uZCJfcyB9LAor
ICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9LAorICAgICAgICB7ICJkdXJhdGlv
biJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJvdW5jZSJfcyB9LAorICAg
ICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJf
cywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJwb3VuZCJfcyB9LAorICAg
ICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAi
c3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFiaXQiX3MgfSwKKyAgICAg
ICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9z
LCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJ5YXJkIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07CisKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBsZVVuaXRzKSwgc3RkOjplbmQoc2lt
cGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAgW10gKGNvbnN0IE1lYXN1cmVVbml0
JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRpZmllcikgeworICAgICAgICAgICAg
aWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0LnN1YlR5
cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczgoKSwgdW5pdElkZW50aWZp
ZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBh
cmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwg
dW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0aCgpKSA8
IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAhPSBzdGQ6OmVuZChzaW1wbGVVbml0
cykpIHsKKyAgICAgICAgaWYgKFdURjo6Y29kZVBvaW50Q29tcGFyZShpdGVyYXRvci0+c3ViVHlw
ZSgpLmNoYXJhY3RlcnMoKSwgaXRlcmF0b3ItPnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50
aWZpZXIuY2hhcmFjdGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpID09IDApCisgICAg
ICAgICAgICByZXR1cm4gKml0ZXJhdG9yOworICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCitjbGFzcyBXZWxsRm9ybWVkVW5pdCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vs
bEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJhdG9yKQorICAgICAgICA6IG1fbnVtZXJhdG9y
KG51bWVyYXRvcikKKyAgICB7CisgICAgfQorCisgICAgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVu
aXQgbnVtZXJhdG9yLCBNZWFzdXJlVW5pdCBkZW5vbWluYXRvcikKKyAgICAgICAgOiBtX251bWVy
YXRvcihudW1lcmF0b3IpCisgICAgICAgICwgbV9kZW5vbWluYXRvcihkZW5vbWluYXRvcikKKyAg
ICB7CisgICAgfQorCisgICAgTWVhc3VyZVVuaXQgbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9udW1lcmF0b3I7IH0KKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gZGVub21pbmF0b3IoKSBj
b25zdCB7IHJldHVybiBtX2Rlbm9taW5hdG9yOyB9Citwcml2YXRlOgorICAgIE1lYXN1cmVVbml0
IG1fbnVtZXJhdG9yOworICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBtX2Rlbm9taW5hdG9yOwor
fTsKKworc3RhdGljIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50
aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3sKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVudGlmaWVyCisgICAgaWYgKGF1dG8g
dW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1bml0SWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBXZWxsRm9ybWVkVW5pdCh1bml0LnZhbHVlKCkpOworCisgICAgLy8gSWYg
dGhlIHN1YnN0cmluZyAiLXBlci0iIGRvZXMgbm90IG9jY3VyIGV4YWN0bHkgb25jZSBpbiB1bml0
SWRlbnRpZmllciwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBwZXIgPSBTdHJpbmdWaWV3
KCItcGVyLSJfcyk7CisgICAgYXV0byBwb3MgPSB1bml0SWRlbnRpZmllci5maW5kKHBlcik7Cisg
ICAgaWYgKHBvcyA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGF1dG8gcG9zMiA9IHVuaXRJZGVudGlmaWVyLmZpbmQocGVyLCBwb3MgKyBwZXIubGVu
Z3RoKCkpOworICAgIGlmIChwb3MyICE9IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBs
ZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgor
ICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHBvcyk7Cisg
ICAgYXV0byBudW1lcmF0b3JVbml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51
bWVyYXRvcik7CisgICAgaWYgKCFudW1lcmF0b3JVbml0KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0
SWRlbnRpZmllcihkZW5vbWluYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAg
IGF1dG8gZGVub21pbmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJpbmcocG9zICsgcGVyLmxl
bmd0aCgpKTsKKyAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0
SWRlbnRpZmllcihkZW5vbWluYXRvcik7CisgICAgaWYgKCFkZW5vbWluYXRvclVuaXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVt
ZXJhdG9yVW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7Cit9CisKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQK
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVl
KQogewpAQCAtMTkxLDIwICszMTQsMjUgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAg
IG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKICAgICBpZiAobV9sb2NhbGUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9udW1iZXJpbmdTeXN0ZW0gPSByZXN1bHQuZ2V0
KCJudSJfcyk7CiAKLSAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwi
LCAicGVyY2VudCIsICJjdXJyZW5jeSIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1h
bFwiLCBcInBlcmNlbnRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgImRlY2ltYWwiKTsKKyAgICAvLyBT
ZXROdW1iZXJGb3JtYXRVbml0T3B0aW9ucyhpbnRsT2JqZWN0LCBvcHRpb25zKQorICAgIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2V0bnVtYmVyZm9ybWF0dW5pdG9wdGlvbnMKKwor
ICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50Iiwg
ImN1cnJlbmN5IiwgInVuaXQiIH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwg
XCJwZXJjZW50XCIsIFwiY3VycmVuY3lcIiwgb3IgXCJ1bml0XCIiLCAiZGVjaW1hbCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKHN0eWxlU3RyaW5n
ID09ICJkZWNpbWFsIikKKyAgICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiX3MpCiAgICAg
ICAgIG1fc3R5bGUgPSBTdHlsZTo6RGVjaW1hbDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInBlcmNlbnQiX3MpCiAg
ICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6UGVyY2VudDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmlu
ZyA9PSAiY3VycmVuY3kiKQorICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSJf
cykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpDdXJyZW5jeTsKKyAgICBlbHNlIGlmIChzdHls
ZVN0cmluZyA9PSAidW5pdCJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpVbml0OwogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTIxMiw3ICszNDAsNyBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICBpZiAoY3Vy
cmVuY3kubGVuZ3RoKCkgIT0gMyB8fCAhY3VycmVuY3kuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0FTQ0lJQWxwaGE+KCkpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90
IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1l
ZCBjdXJyZW5jeSBjb2RlIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTIyOSw2MCArMzU3LDI2OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAg
ICBjdXJyZW5jeURpZ2l0cyA9IGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjdXJyZW5jeSk7CiAgICAg
fQogCi0gICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVu
Y3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hbWUiIH0sICJjdXJyZW5jeURpc3Bs
YXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5
bWJvbCIpOworICAgIFN0cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0
aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
cnJlbmN5RGlzcGxheSIpLCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYXJyb3dTeW1ib2wiLCAibmFt
ZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xc
IiwgXCJuYXJyb3dTeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6
Q3VycmVuY3kpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAiY29kZSIp
CisgICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNvZGUiX3MpCiAgICAgICAg
ICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6Q29kZTsKLSAgICAgICAg
ZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wiKQorICAgICAgICBlbHNl
IGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCJfcykKICAgICAgICAgICAgIG1f
Y3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w7Ci0gICAgICAgIGVsc2Ug
aWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSIpCisgICAgICAgIGVsc2UgaWYgKGN1
cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFycm93U3ltYm9sIl9zKQorICAgICAgICAgICAgbV9j
dXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDsKKyAgICAgICAg
ZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIl9zKQogICAgICAgICAgICAg
bV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHVuc2lnbmVk
IG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIp
LCAxLCAyMSwgMSk7CisgICAgU3RyaW5nIGN1cnJlbmN5U2lnblN0cmluZyA9IGludGxTdHJpbmdP
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y3VycmVuY3lTaWduIiksIHsgInN0YW5kYXJkIiwgImFjY291bnRpbmciIH0sICJjdXJyZW5jeVNp
Z24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwiIG9yIFwiYWNjb3VudGluZ1wiIiwgInN0YW5k
YXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisgICAgaWYgKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgICAgIGlmIChjdXJyZW5jeVNpZ25TdHJpbmcg
PT0gInN0YW5kYXJkIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNp
Z246OlN0YW5kYXJkOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeVNpZ25TdHJpbmcgPT0gImFj
Y291bnRpbmciX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9
IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAg
U3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIE9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdDsKKyAgICBpZiAoIXVuaXQuaXNOdWxsKCkpIHsK
KyAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIodW5pdCk7
CisgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3QgYSB3ZWxsLWZvcm1lZCB1bml0
IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IG1fdW5pdCA9IHVuaXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OlVuaXQpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAidW5pdCBtdXN0IGJlIGEgc3RyaW5nIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGlu
dGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0KTsKKyAgICBTdHJpbmcgdW5pdERpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InVuaXREaXNwbGF5IiksIHsgInNob3J0IiwgIm5hcnJvdyIsICJsb25nIiB9LCAidW5pdERpc3Bs
YXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiLCBcIm5hcnJvd1wiLCBvciBcImxvbmdcIiIsICJz
aG9ydCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgaWYgKG1f
c3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09
ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1fdW5pdERpc3BsYXkgPSBVbml0RGlzcGxheTo6U2hv
cnQ7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJuYXJyb3ciX3MpCisg
ICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6Ok5hcnJvdzsKKyAgICAgICAg
ZWxzZSBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gImxvbmciX3MpCisgICAgICAgICAgICBtX3Vu
aXREaXNwbGF5ID0gVW5pdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIAotICAgIHVuc2lnbmVkIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KQot
ICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZy
YWN0aW9uRGlnaXRzLCBjdXJyZW5jeURpZ2l0cyk7Ci0gICAgZWxzZSBpZiAobV9zdHlsZSA9PSBT
dHlsZTo6UGVyY2VudCkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IG1p
bmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICBlbHNlCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsKKyAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICB1bnNpZ25lZCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJl
bmN5RGlnaXRzIDogKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpID8gMCA6IDM7CiAKLSAgICB1
bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlv
bkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0KTsKKyAgICBTdHJpbmcgbm90YXRpb25TdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0
aW9uIiksIHsgInN0YW5kYXJkIiwgInNjaWVudGlmaWMiLCAiZW5naW5lZXJpbmciLCAiY29tcGFj
dCIgfSwgIm5vdGF0aW9uIG11c3QgYmUgZWl0aGVyIFwic3RhbmRhcmRcIiwgXCJzY2llbnRpZmlj
XCIsIFwiZW5naW5lZXJpbmdcIiwgb3IgXCJjb21wYWN0XCIiLCAic3RhbmRhcmQiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChub3RhdGlvblN0cmluZyA9
PSAic3RhbmRhcmQiX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OlN0YW5k
YXJkOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJzY2llbnRpZmljIl9zKQorICAg
ICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOworICAgIGVsc2UgaWYg
KG5vdGF0aW9uU3RyaW5nID09ICJlbmdpbmVlcmluZyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9
IEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc7CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJpbmcg
PT0gImNvbXBhY3QiX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkNvbXBh
Y3Q7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIEpTVmFs
dWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRz
IikpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMs
IG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0g
b3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBTdHJpbmcgY29tcGFjdERpc3BsYXkgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIHsgInNob3J0IiwgImxvbmciIH0sICJjb21wYWN0
RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0XCIgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywg
MjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7Ci0gICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOworICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkg
eworICAgICAgICBpZiAoY29tcGFjdERpc3BsYXkgPT0gInNob3J0Il9zKQorICAgICAgICAgICAg
bV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpTaG9ydDsKKyAgICAgICAgZWxzZSBp
ZiAoY29tcGFjdERpc3BsYXkgPT0gImxvbmciX3MpCisgICAgICAgICAgICBtX2NvbXBhY3REaXNw
bGF5ID0gQ29tcGFjdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIFRyaVN0YXRlIHVzZUdyb3VwaW5nID0g
aW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6
OkZhbHNlOwogCisgICAgU3RyaW5nIHNpZ25EaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxh
eSIpLCB7ICJhdXRvIiwgIm5ldmVyIiwgImFsd2F5cyIsICJleGNlcHRaZXJvIiB9LCAic2lnbkRp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3Ig
XCJleGNlcHRaZXJvXCIiLCAiYXV0byIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgaWYgKHNpZ25EaXNwbGF5ID09ICJhdXRvIl9zKQorICAgICAgICBtX3Np
Z25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkF1dG87CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkg
PT0gIm5ldmVyIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6Ok5ldmVy
OworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJhbHdheXMiX3MpCisgICAgICAgIG1fc2ln
bkRpc3BsYXkgPSBTaWduRGlzcGxheTo6QWx3YXlzOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5
ID09ICJleGNlcHRaZXJvIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6
OkV4Y2VwdFplcm87CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwor
ICAgIC8vIE9wdGlvbnMgYXJlIG9idGFpbmVkLiBDb25maWd1cmUgZm9ybWF0dGVyIGhlcmUuCisK
KyNpZiBIQVZFKElDVV9VTlVNRikKKyAgICAvLyBDb25zdHJ1Y3RpbmcgSUNVIE51bWJlciBTa2Vs
ZXRvbnMgdG8gY29uZmlndXJlIFVOdW1iZXJGb3JtYXR0ZXIuCisgICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQKKworICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25C
dWlsZGVyOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJyb3VuZGluZy1tb2Rl
LWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9zdHlsZSkgeworICAgIGNhc2UgU3R5bGU6OkRl
Y2ltYWw6CisgICAgICAgIC8vIE5vIHNrZWxldG9uIGlzIG5lZWRlZC4KKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBwZXJjZW50IHNjYWxlLzEwMCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFN0eWxlOjpDdXJyZW5jeTogeworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIGN1cnJlbmN5LyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKGN1cnJlbmN5
KTsKKworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN1
bml0LXdpZHRoCisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5jeURpc3BsYXkpIHsKKyAgICAgICAg
Y2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtaXNvLWNvZGUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgorICAgICAgICAgICAgLy8g
RGVmYXVsdCBvcHRpb24uIERvIG5vdCBzcGVjaWZ5IHVuaXQtd2lkdGguCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ci
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFt
ZToKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0
aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFN0eWxlOjpVbml0OiB7CisgICAgICAgIC8vIFRoZSBtZWFz
dXJlLXVuaXQgc3RlbSB0YWtlcyBvbmUgcmVxdWlyZWQgb3B0aW9uOiB0aGUgdW5pdCBpZGVudGlm
aWVyIG9mIHRoZSB1bml0IHRvIGJlIGZvcm1hdHRlZC4KKyAgICAgICAgLy8gVGhlIGZ1bGwgdW5p
dCBpZGVudGlmaWVyIGlzIHJlcXVpcmVkOiBib3RoIHRoZSB0eXBlIGFuZCB0aGUgc3VidHlwZSAo
Zm9yIGV4YW1wbGUsIGxlbmd0aC1tZXRlcikuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBtZWFzdXJlLXVuaXQvIik7CisgICAgICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9
IHdlbGxGb3JtZWRVbml0LT5udW1lcmF0b3IoKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZChudW1lcmF0b3JVbml0LnR5cGUoKSwgJy0nLCBudW1lcmF0b3JVbml0LnN1YlR5cGUoKSk7
CisgICAgICAgIGlmIChhdXRvIGRlbm9taW5hdG9yVW5pdFZhbHVlID0gd2VsbEZvcm1lZFVuaXQt
PmRlbm9taW5hdG9yKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gZGVu
b21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUoKSwgJy0nLCBkZW5vbWluYXRvclVu
aXQuc3ViVHlwZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoIChtX3VuaXRE
aXNwbGF5KSB7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgorICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLXNob3J0Iik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93OgorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6Cisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtZnVs
bC1uYW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRv
bnMubWQjaW50ZWdlci13aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
aW50ZWdlci13aWR0aC8iKTsKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKChXVEY6OklDVTo6
bWFqb3JWZXJzaW9uKCkgPj0gNjcpID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1
c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1h
dF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7Cisg
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmlj
YW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
IC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICAvLyBEbyBub3Qgc2V0IGFu
eXRoaW5nLgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCNub3RhdGlvbgorICAgIHN3aXRjaCAobV9ub3RhdGlvbikg
eworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgc2NpZW50aWZpYyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElu
dGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgZW5naW5lZXJpbmciKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90
YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHN3aXRjaCAobV9jb21wYWN0RGlzcGxheSkgeworICAg
ICAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1zaG9ydCIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6Okxvbmc6CisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3QtbG9uZyIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3Jt
YXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbi1kaXNwbGF5CisgICAgLy8gQ3VycmVu
Y3lTaWduJ3MgYWNjb3VudGluZyBpcyBhIHBhcnQgb2YgU2lnbkRpc3BsYXkgaW4gSUNVLgorICAg
IGJvb2wgdXNlQWNjb3VudGluZyA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSAmJiBtX2N1
cnJlbmN5U2lnbiA9PSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmcpOworICAgIHN3aXRjaCAobV9z
aWduRGlzcGxheSkgeworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGlmICh1
c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiBzaWduLWFjY291bnRpbmciKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgc2lnbi1uZXZlciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNw
bGF5OjpBbHdheXM6CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
c2lnbi1hbHdheXMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhj
ZXB0WmVybzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1leGNlcHQtemVybyIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tZXhjZXB0LXplcm8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFt
X3VzZUdyb3VwaW5nKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdy
b3VwLW9mZiIpOworCisgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgZGF0YUxvZ0xuSWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3Nl
LCBtX2xvY2FsZSk7CisgICAgZGF0YUxvZ0xuSWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2
ZXJib3NlLCBza2VsZXRvbik7CisgICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24p
OworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIG1fbnVtYmVyRm9y
bWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0
ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIG1fbG9j
YWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVOVU1fREVGQVVMVDsKICAgICBz
d2l0Y2ggKG1fc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgpAQCAtMjk5LDY1ICs2
MzUsMTEzIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGNhc2UgQ3VycmVuY3lE
aXNwbGF5OjpTeW1ib2w6CiAgICAgICAgICAgICBzdHlsZSA9IFVOVU1fQ1VSUkVOQ1k7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJv
bDoKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxlID0g
VU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IHN3aXRjaCAobV9jdXJyZW5jeVNpZ24pIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0
YW5kYXJkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWduOjpB
Y2NvdW50aW5nOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51
bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1f
bm90YXRpb24pIHsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpFbmdpbmVlcmluZzoKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKG1fc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICBjYXNlIFNpZ25E
aXNwbGF5OjpBbHdheXM6CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFs
aXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6
dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVu
KHN0eWxlLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICB1bnVt
X3NldFRleHRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fQ1VSUkVOQ1lfQ09E
RSwgU3RyaW5nVmlldyhtX2N1cnJlbmN5KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgbV9jdXJy
ZW5jeS5sZW5ndGgoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAo
IW1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdU
eXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAg
ICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVH
RVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUp
OwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9N
SU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdO
SUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNl
R3JvdXBpbmcpOwogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX1JPVU5ESU5HX01PREUsIFVOVU1fUk9VTkRfSEFMRlVQKTsKKyNlbmRpZgogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZh
bHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VO
VU1GKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29w
ZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1m
X2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVy
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZv
cm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTM2OCwxMCArNzUyLDI1IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdT
dHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgo
KSk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVU5VTUYp
CisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJl
c3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
YSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfZm9y
bWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVu
Z3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIEJpZ0ludC4iX3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwog
ICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0
RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgp
LCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgQmlnSW50LiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3Ry
aW5nKGJ1ZmZlcikpOwogfQogCkBAIC0zODQsNiArNzgzLDggQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gInBl
cmNlbnQiX3M7CiAgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAiY3Vy
cmVuY3kiX3M7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9z
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CkBAIC0zOTYsNiArNzk3LDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMK
ICAgICAgICAgcmV0dXJuICJjb2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1i
b2w6CiAgICAgICAgIHJldHVybiAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYXJyb3dTeW1ib2w6CisgICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAgIGNh
c2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAg
fQpAQCAtNDAzLDYgKzgwNiw3NiBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3Vy
cmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwogICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3Jt
YXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBzd2l0Y2gg
KG5vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBy
ZXR1cm4gInN0YW5kYXJkIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgor
ICAgICAgICByZXR1cm4gInNjaWVudGlmaWMiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVu
Z2luZWVyaW5nOgorICAgICAgICByZXR1cm4gImVuZ2luZWVyaW5nIl9zOworICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmlu
ZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQoreworICAgIHN3aXRjaCAoY3VycmVuY3lTaWdu
KSB7CisgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0
YW5kYXJkIl9zOworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAgICBy
ZXR1cm4gImFjY291bnRpbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQor
eworICAgIHN3aXRjaCAodW5pdERpc3BsYXkpIHsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9y
dDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJy
b3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2UgVW5pdERpc3BsYXk6Okxv
bmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkg
Y29tcGFjdERpc3BsYXkpCit7CisgICAgc3dpdGNoIChjb21wYWN0RGlzcGxheSkgeworICAgIGNh
c2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAg
IGNhc2UgQ29tcGFjdERpc3BsYXk6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlT
dHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCit7CisgICAgc3dpdGNoIChzaWduRGlzcGxh
eSkgeworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgcmV0dXJuICJuZXZlciJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgICAgIHJldHVybiAiYWx3YXlz
Il9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgICAgIHJldHVybiAi
ZXhjZXB0WmVybyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2Jq
ZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTQxMSwxOSArODg0LDM4IEBAIEpTT2JqZWN0KiBJbnRs
TnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxv
Y2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJl
cmluZ1N5c3RlbSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsK
LSAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICBzd2l0Y2ggKG1fc3R5
bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgorICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3VycmVuY3kpKTsKICAgICAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVu
Y3lEaXNwbGF5KSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBj
dXJyZW5jeVNpZ25TdHJpbmcobV9jdXJyZW5jeVNpZ24pKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3Vu
aXQpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidW5pdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCB1bml0RGlzcGxh
eVN0cmluZyhtX3VuaXREaXNwbGF5KSkpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUlu
dGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1G
cmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwot
ICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBBU1NFUlQobV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsK
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnRE
aWdpdHM6CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1i
ZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsKKyAgICBp
ZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0
RGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNw
bGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAg
LTQzMiw3ICs5MjQsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZN
JiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCiAgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0s
IHRoaXMsIGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmco
VU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0
ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVy
Rm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQogewogICAgIHN3aXRjaCAoZmllbGQp
IHsKICAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKQEAgLTQ0NSwyMCArOTM3LDMxIEBAIHN0
YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVs
ZCwgZG91YmxlIHZhbHVlKQogICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwogICAgIGNhc2Ug
VU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9z
OworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6CisgICAgICAgIHJldHVybiAi
ZXhwb25lbnRTZXBhcmF0b3IiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6
CisgICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7CisgICAgY2FzZSBVTlVNX0VY
UE9ORU5UX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKICAgICBj
YXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImdyb3Vw
Il9zOwogICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKICAgICAgICAgcmV0dXJuICJjdXJy
ZW5jeSJfczsKICAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJw
ZXJjZW50U2lnbiJfczsKKyAgICAgICAgLy8gSWYgdGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hv
dWxkIHJlcG9ydCBhcyB1bml0LgorICAgICAgICAvLyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRs
NDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpz
CisgICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQp
ID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7CiAgICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9z
OworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/ICJtaW51c1NpZ24iX3MgOiAi
cGx1c1NpZ24iX3M7CisjaWYgSEFWRShJQ1VfVU5VTUYpCisgICAgY2FzZSBVTlVNX01FQVNVUkVf
VU5JVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9zOworICAgIGNhc2UgVU5VTV9DT01Q
QUNUX0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisjZW5kaWYKICAgICAvLyBU
aGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lm
eSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgogICAgIC8vIElmIHRoZXkgZG8sIHRoZXkg
ZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24gcGFydCB0eXBlcywgc28gY29uc2lkZXIg
aXQgYW4gInVua25vd24iLgogICAgIGNhc2UgVU5VTV9QRVJNSUxMX0ZJRUxEOgotICAgIGNhc2Ug
VU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05f
RklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxEOgogICAgIC8vIEFueSBuZXdlciBh
ZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBj
b25zaWRlcmVkIGFuICJ1bmtub3duIiBwYXJ0LgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biAidW5rbm93biJfczsKQEAgLTQ2Niw3ICs5NjksNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHBh
cnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKICAg
ICByZXR1cm4gInVua25vd24iX3M7CiB9CiAKLXZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJh
dG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCit2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZp
ZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ3OCw3ICs5ODEsMTIgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmwKICAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkLCAzMj4gZmllbGRzKHN0
cmluZ0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKICAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwog
ICAgIGludDMyX3QgZW5kSW5kZXggPSAwOwotICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9z
aXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZpZWxkVHlwZSA9IGl0ZXJhdG9y
Lm5leHQoYmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgd2hpbGUgKGZpZWxkVHlwZSA+PSAwKSB7CiAgICAgICAgIHNpemVf
dCBzaXplID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OwogICAgICAgICBmb3IgKGF1dG8gaSA9IGJl
Z2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7CkBAIC00ODYsNyArOTk0LDEyIEBAIHZvaWQg
SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0gc2l6
ZSkKICAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQgeyBm
aWVsZFR5cGUsIHNpemUgfTsKICAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRw
b3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQo
YmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwpAQCAtNTAwLDcgKzEwMTMsNyBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAogICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxk
c1tjdXJyZW50SW5kZXhdLnR5cGU7CiAgICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBzdHJp
bmdMZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZSA9PSBmaWVsZFR5cGUpCiAgICAg
ICAgICAgICArK2N1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlw
ZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0
VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7CisgICAg
ICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVy
YWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxk
cyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKICAgICAgICAgYXV0byBwYXJ0VmFsdWUgPSBq
c1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBjdXJyZW50SW5kZXggLSBzdGFy
dEluZGV4KTsKICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChn
bG9iYWxPYmplY3QpOwogICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnR5cGUsIHBhcnRUeXBlKTsKQEAgLTUxNSwyMCArMTAyOCw0MCBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZm9ybWF0
bnVtYmVydG9wYXJ0cwogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uc3QKIHsKLSAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRl
bGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gb3Bl
biBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBy
ZXN1bHQ7CisjaWYgSEFWRShJQ1VfVU5VTUYpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVy
KTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIg
PSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0
ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUs
IGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5n
ZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9yZXN1
bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdl
dCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdl
dCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1f
bnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmll
bGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhy
ZXN1bHQpOwogCkBAIC01MzYsNyArMTA2OSw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAg
ICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmpl
Y3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRyLmdldCgpLCBwYXJ0cyk7CisgICAgZm9y
bWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0
cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQzMDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1
Mzg4ZDViNjViNzM0NzYuLmI3ZWJhNWY2NTFkODVlMzg5NTY4NDZkMDE4MDU2ODJjMmM2OGI1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
IDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5o
PgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVU5VTUYpCisvLyBVTlVNX0NPTVBBQ1RfRklFTEQg
YW5kIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEIGFyZSBhdmFpbGFibGUgYWZ0ZXIgSUNVIDY0Lgor
I2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY0CisjZGVmaW5lIEhBVkVfSUNVX1VOVU1G
IDAKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFKElDVV9VTlVNRikKKyNpbmNsdWRlIDx1bmlj
b2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2VudW0gY2xh
c3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNh
bnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1
aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25G
aW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAgICB2b2lk
IHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNvbnN0IFN0
cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSosIEpTU3Ry
aW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBE
ZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZvaWQgZm9y
bWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwgY29uc3Qg
U3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpTU3RyaW5n
KiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAg
ICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
LCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9u
KTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9u
KTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBA
IC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRh
KGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhf
dCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBDdXJyZW5j
eURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBzdHJ1Y3Qg
VU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZv
cm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1
aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBlbnVtIGNs
YXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OworICAg
IGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9
OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcg
fTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBB
bHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJp
bmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5n
KEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNpZ25T
dHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5
U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNw
bGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25E
aXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVu
Y3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElDVV9VTlVN
RikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51bWZf
Y2xvc2U+OworICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtZl9jbG9zZVJlc3VsdD47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIs
IFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNlbHNlCisgICAg
dXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+PiBt
X251bWJlckZvcm1hdDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIFN0cmlu
ZyBtX251bWJlcmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcg
bV91bml0OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAg
dW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9t
YXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CkBAIC05Niw3ICsxMzEsMTMgQEAgY2xhc3MgSW50
bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNp
Z25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICBTdHlsZSBtX3N0eWxl
IHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3Bs
YXk7CisgICAgQ3VycmVuY3lTaWduIG1fY3VycmVuY3lTaWduOworICAgIFVuaXREaXNwbGF5IG1f
dW5pdERpc3BsYXk7CisgICAgQ29tcGFjdERpc3BsYXkgbV9jb21wYWN0RGlzcGxheTsKKyAgICBJ
bnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6U3RhbmRhcmQgfTsKKyAgICBT
aWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUg
fTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjg1Y2RhMjUyN2MzZjY5OWM5ZjVhNzZkMTcxZjVjYWJkZmFiMmYxOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyAgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRs
VHlwZT4KK3ZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsSW5zdGFuY2UsIEpTT2JqZWN0KiBvcHRpb25zLCB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
ID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9
IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMg
PSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKworICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0g
SW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
cywgMjEsIDIxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmlu
ZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGlu
dGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMi
KSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRz
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5t
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBh
Y3QpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGlu
Z1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlu
dGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0czsKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKK30KKworY2xhc3MgSW50
bEZpZWxkSXRlcmF0b3IgeworcHVibGljOgorICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEludGxG
aWVsZEl0ZXJhdG9yKTsKKworICAgIGV4cGxpY2l0IEludGxGaWVsZEl0ZXJhdG9yKFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yKQorICAgICAgICA6IG1faXRlcmF0b3IoaXRlcmF0b3Ip
CisgICAgeworICAgIH0KKworICAgIGludDMyX3QgbmV4dChpbnQzMl90JiBiZWdpbkluZGV4LCBp
bnQzMl90JiBlbmRJbmRleCwgVUVycm9yQ29kZSYgc3RhdHVzKQorICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHN0YXR1cyk7CisgICAgICAgIHJldHVybiB1ZmllbGRwb3NpdGVyX25leHQobV9p
dGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCmluZGV4IGM0OTlhZGExOWYzYWQ0YzJmODMwYWRjM2M1M2I4ZDVhNmMxZjU3NmYuLmU5
ZDMyYTI4ZDBjYmQ3OWY2NDEzZjc5MjU4MDEyMDYxMDE1NzJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgog
CisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCkBAIC0zNSwyNSArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEludGxQbHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVsZXMpIH07
CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigp
KFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpIGNvbnN0Ci17Ci0gICAgaWYgKHBsdXJhbFJ1bGVz
KQotICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Ci19Ci0KLXZvaWQgSW50bFBs
dXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAg
dW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCi1zdHJ1Y3QgVUVudW1lcmF0aW9uRGVsZXRl
ciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFVFbnVtZXJhdGlvbiogZW51bWVyYXRpb24pIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoZW51bWVyYXRpb24pCi0gICAgICAgICAgICB1ZW51bV9jbG9z
ZShlbnVtZXJhdGlvbik7Ci0gICAgfQotfTsKK3VzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJ
Q1VEZWxldGVyPHVlbnVtX2Nsb3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1cmFsUnVs
ZXM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTI1LDM0ICsx
MDgsOCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBU
eXBlOjpPcmRpbmFsIDogVHlwZTo6Q2FyZGluYWw7CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtSW50
ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVt
SW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM7Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0g
c3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQgbWF4aW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWlu
aW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Cisg
ICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9u
cywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1G
cmFjdGlvbkRpZ2l0czsKLQotICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGlu
dGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgfQogCiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBz
dGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1f
b3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51
bGxwdHIsICZzdGF0dXMpKTsKQEAgLTE2MSwxNCArMTE4LDIwIEBAIHZvaWQgSW50bFBsdXJhbFJ1
bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMpIHsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwotICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRf
RElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5U
X0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgfSBlbHNl
IHsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGln
aXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAg
ICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJ
T05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHVudW1f
c2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lU
U19VU0VELCB0cnVlKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMpOworICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKQEAgLTE5MSwxMSArMTU0LDE4IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6
OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBU
eXBlOjpPcmRpbmFsID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdl
ckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAg
aWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERp
Z2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7Ci0g
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cy52YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRp
Z2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoK
KyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IGIwMTVmZTgyYTBlNjkzYTBjYmQwODJiMjIw
ZjI1NWQ4MmFlNzRiNzEuLmZhNDMzZGZhMjhjMGFmMzM1ODhjNTEyZjQzNDg0YTc3NWU0MGNiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CkBAIC0yNSw5ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51
bS5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUzLDYgKzU0
LDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogCiAgICAgREVDTEFSRV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5
cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxO
b3RhdGlvbik7CisKICAgICB2b2lkIGluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKICAgICBKU1ZhbHVlIHNlbGVj
dChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJl
c29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpAQCAtNjYsMTIgKzcwLDggQEAg
Y2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
CiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAg
ICBzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShV
UGx1cmFsUnVsZXMqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVs
ZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0g
ICAgfTsKKyAgICB1c2luZyBVUGx1cmFsUnVsZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1cGxydWxl
c19jbG9zZT47CisgICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVu
dW1fY2xvc2U+OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1
bGVzRGVsZXRlcj4gbV9wbHVyYWxSdWxlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZv
cm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OwpAQCAtODAsOCArODAs
OSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNp
Z25lZCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzOworICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAg
IEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFj
dGlvbkRpZ2l0cyB9OwogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5jcHAKaW5kZXggOTFiMWJmYTE0MjU4OTFmN2MzYzg1NDRhMmI3NDk4MDMwZjdj
NDZlNy4uOTA2MmUyY2Q4ODRiODQyNTRkYzkwYzMyNzFlNjUyNTYxZTk1ZGZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0
cnVjdG9yLmgiCkBAIC00MCwxOCArNDAsNiBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZv
cm1hdEludGVybmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVuc2lvbktl
eXNbMV0gPSB7ICJudSIgfTsKIH0KIAotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVUmVs
YXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRp
bWVGb3JtYXR0ZXIqIHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Ci17Ci0gICAgaWYg
KHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpCi0gICAgICAgIHVyZWxkYXRlZm10X2Nsb3NlKHJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOwotfQotCi12b2lkIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJl
ckZvcm1hdCkgY29uc3QKLXsKLSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1bnVtX2Ns
b3NlKG51bWJlckZvcm1hdCk7Ci19Ci0KIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
ICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1
cmUpOwpAQCAtMzA5LDcgKzI5Nyw4IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAKLSAgICAg
ICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
YWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmlu
Zyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bEZpZWxk
SXRlcmF0b3IgZmllbGRJdGVyYXRvcihpdGVyYXRvci5nZXQoKSk7CisgICAgICAgIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJG
b3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0
ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygp
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmgKaW5kZXggODViODFmYTgzOGQzNWVmMzNlZTljMGFlNmE1MDI3MGQxNmY4NTVkYS4u
ZTI3MTg3OTg1OTdjYTcwNTVjMWNhM2RkZmJiOTlhMjFkNDEzYTY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaApA
QCAtNjgsMTIgKzY4LDggQEAgY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90
IHsgTG9uZywgU2hvcnQsIE5hcnJvdyB9OwogCi0gICAgc3RydWN0IFVSZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUmVsYXRpdmVEYXRl
VGltZUZvcm1hdHRlciopIGNvbnN0OwotICAgIH07Ci0gICAgc3RydWN0IFVOdW1iZXJGb3JtYXRE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsK
LSAgICB9OworICAgIHVzaW5nIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlciA9IElD
VURlbGV0ZXI8dXJlbGRhdGVmbXRfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxl
dGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
c3R5bGVTdHJpbmcoU3R5bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKaW5kZXggZTEyZjQ4MTZjM2UxNDQyNTVjMWE0ZjUzMmEyODY3N2RkYjNkMjU1Ni4u
ZTI2MjFlZDk0ZTU5ODQ5YTdhNmM4NzgwMGI1NWFkYzYwMDcyMjBkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1
ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNV
SGVscGVycy5oPgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlIZWxwZXJzLmgiCkBAIC0zMDc2LDkgKzMwNzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoSlNHbG9i
YWxPYgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklDVVZl
cnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewotICAgIFVWZXJzaW9uSW5mbyB2
ZXJzaW9uSW5mbzsKLSAgICB1X2dldFZlcnNpb24odmVyc2lvbkluZm8pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmVyc2lvbkluZm9bMF0pKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSkpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzc2VydEVuYWJsZWQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzEyNjNiNTc1YzRlNDkwYjkxNjE4MjVhMGNmMTY1N2UxMWFiZGJh
OC4uODQ1NmUzMGJiYWZlZGQ2OTcxYWVhMDYzYzA0OTAxNGVlY2IwNWMwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODAsNiArMTgwLDcgQEAKIAkJRTM4
RDZFMjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMwMEE3
NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi87IH07CiAJCUUzOTJGQTI3MjJFOTJCRkYw
MEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291
cmNlVXNhZ2VDb2NvYS5jcHAgKi87IH07CiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBK
U1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLzsg
fTsKKwkJRTNCRTA5QTcyNEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRTA5QTYyNEE1ODU0NTAw
OURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovOyB9OwogCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovOyB9
OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEM0MxQTk2MjUz
QzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKIAkJRUI2MUVEQzcyNDA5Q0ND
MTAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjYxRURDNjI0MDlDQ0MwMDAxRUZFMzYgLyogU3lz
dGVtVHJhY2luZ0NvY29hLmNwcCAqLzsgfTsKQEAgLTczMSw2ICs3MzIsNyBAQAogCQlFMzkyRkEy
NjIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlVXNhZ2VDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVl
TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVN
YWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUy
MDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1ZhbHVlTWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkUw
OUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElDVUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5MDIx
MTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTNFNjRGMEIyMjgxMzQyODAwMUU1NUI0IC8qIE5vbm1vdmFibGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm9ubW92YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI3Myw4ICsxMjc1LDggQEAKIAkJCQkwRjcwNzVGMzFGQkY1MzdBMDA0ODlBRjAgLyog
VGltaW5nU2NvcGUuaCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxS
VUNhY2hlLmggKi8sCiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQu
aCAqLywKLQkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRlZFByb2Nlc3Mu
aCAqLywKIAkJCQk1MjFDQzZCMzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3Mu
Y3BwICovLAorCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vz
cy5oICovLAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAog
CQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlFMzYw
Qzc2NDIxMjdCODVCMDBDOTBGMEUgLyogVW5hbGlnbmVkQWNjZXNzLmggKi8sCkBAIC0xNDUyLDYg
KzE0NTQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEE0
NzM1MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwICovLAorCQkJCUUzQkUwOUE2
MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLywKIAkJCQk1MkIyMjhDMTI0NThE
QzgyMDA3NTNEOTEgLyogSUNVSGVscGVycy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpY3U7CkBA
IC0xNjc2LDYgKzE2NzksNyBAQAogCQkJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVn
b3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNEODE1MUE4MjVCMDA0
MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjVCNDRFMjIxM0Q2
MTYwMDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCRTA5QTcy
NEE1ODU0RDAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ew
NTA5M0YxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMTc0Nyw3ICsxNzUxLDYgQEAKIAkJCQlBNUJBMTVGNTE4MjQzNDgwMDBB
ODJFNjkgLyogU3RyaW5nSW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEREJGQTcx
NjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5n
Vmlld0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQzMThBMUU4QzMwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4MjVC
MDA0MTIzRkYgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzY0LDYgKzE3NjcsNyBA
QAogCQkJCTUzMTFCRDVDMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5bmFt
aWNDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAwNDg5
QUYwIC8qIFRpbWluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyMUNDNkI0MjRBMjc4
MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkNzFlYjI4MjM1NDllNWQ1ZGEwN2NiYWJhOTRlOTQ2
MTEwMWUyMmQuLmQyMjBlNmE4ODg2N2UxZWYxNDBkMGIwYzQ3ZTA5NTIwNjZkMGJlZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC00OTksNiArNDk5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
dW5pY29kZS9VVEY4Q29udmVyc2lvbi5jcHAKIAogICAgIHVuaWNvZGUvaWN1L0NvbGxhdG9ySUNV
LmNwcAorICAgIHVuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCiApCiAKIHNldChXVEZfUFJJVkFU
RV9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FT
Q0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAppbmRleCBh
OTA4ZGYzYmVhNjFmZmMyM2ViZGRiMzQ0Yzc1NmZjMmM4ZTg4Mjc3Li5mN2E0NzlhMGJhMDcxZWYw
Njg5YTBlMTIzMmZiZWI0NGE1ZDBiNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewog
CkBAIC00Nyw3ICs0OCw5IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbCBmaW5hbCB7CiAgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwgeyBudWxscHRyIH07CiAgICAgfQogCi0gICAgY29uc3QgY2hhciog
Y2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0ZXhw
ciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9j
YXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQogCiBwcml2YXRlOgogICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykgOiBt
X2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4
IDhiZGM4YjBlZTE5YjMyY2Q1ZjA2ZmZkYzJjYTc3YWUzNWE2MWYzOGQuLmMyMmE4YWUzNDQ2MWMz
YjNjYzgwMmJmY2I1MzAxYTY2NzJiYzllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BU0NJSUxpdGVyYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5o
PgpAQCAtNjgsNiArNjksNyBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBTdHJpbmdW
aWV3KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0
IGNoYXIqKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVt
cHR5KCk7CiAKQEAgLTM1Niw2ICszNTgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1Zp
ZXcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIGluaXRpYWxp
emUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOwog
fQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhBU0NJSUxpdGVyYWwgc3RyaW5nKQor
eworICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7
Cit9CisKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0
cmluZykKIHsKICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmYzZTEwY2Y0NmY1OThi
MzhmMWIwNDkyNjVmY2NlN2ZlODJjNzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaW5jbHVkZSA8bXV0
ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91dmVybnVtLmg+CisKK25hbWVzcGFjZSBXVEYgeworbmFt
ZXNwYWNlIElDVSB7CisKK3N0YXRpYyBjb25zdCBVVmVyc2lvbkluZm8mIHZlcnNpb24oKQorewor
ICAgIHN0YXRpYyBVVmVyc2lvbkluZm8gdmVyc2lvbnMgeyB9OworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAg
ICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9ucyk7CisgICAgfSk7CisgICAgcmV0dXJuIHZlcnNpb25z
OworfQorCit1bnNpZ25lZCBtYWpvclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMCA8
IFVfTUFYX1ZFUlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzBdOworfQorCit1
bnNpZ25lZCBtaW5vclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMSA8IFVfTUFYX1ZF
UlNJT05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzFdOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIFdURjo6SUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9J
Q1VIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKaW5k
ZXggNzJhOTQzZTI1YTI0OWJmNTFmODQ0ZDQwY2I3ZDBmODVhNzIyMjkxOS4uZDE3MjJkZTY0ODg2
MTYwZjA4ZjZlYmFlMDMxNjQxNmZiYzk0YjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1
L0lDVUhlbHBlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1
ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTEwNyw4ICsx
MDgsMjQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSAuLi5Bcmd1
bWVudFR5cGVzPiBVRXJyb3JDb2RlIGNhbGxCdWZmZXIKICAgICByZXR1cm4gc3RhdHVzOwogfQog
Ci19Cit0ZW1wbGF0ZTxhdXRvIGRlbGV0ZUZ1bmN0aW9uPgorc3RydWN0IElDVURlbGV0ZXIgewor
ICAgIHZvaWQgb3BlcmF0b3IoKSh0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShkZWxl
dGVGdW5jdGlvbik+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4gcG9pbnRlcikKKyAgICB7Cisg
ICAgICAgIGlmIChwb2ludGVyKQorICAgICAgICAgICAgZGVsZXRlRnVuY3Rpb24ocG9pbnRlcik7
CisgICAgfQorfTsKKworbmFtZXNwYWNlIElDVSB7CisKK3Vuc2lnbmVkIG1ham9yVmVyc2lvbigp
OwordW5zaWduZWQgbWlub3JWZXJzaW9uKCk7CisKK30gLy8gbmFtZXNwYWNlIElDVQorfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOwog
dXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmc7CiB1c2luZyBXVEY6Om5lZWRz
VG9Hcm93VG9Qcm9kdWNlQnVmZmVyOwordXNpbmcgV1RGOjpJQ1VEZWxldGVyOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjM1OTdmNGEy
MGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li4xMTYwYTQ3NmZjZTkzNGM3MDI1NWE0OTRj
OTI4YTUwYTgyZjRiMGZkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI2ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBVbmlmaWVkIEludGwu
TnVtYmVyRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDYt
MjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
dGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNm
NGUxNjRiOTRkZjEuLjIwZTVlNTM5OWEzYzFhYTk2N2RlN2E5MGM1ZGI1YTdjNWFjNjY1MzggMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTI4LDcgKzI4LDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRp
bWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5EaXNwbGF5TmFtZXMK
ICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAog
ICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9EYXRh
Vmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402945</attachid>
            <date>2020-06-27 00:19:16 -0700</date>
            <delta_ts>2020-06-27 00:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627001915.patch</filename>
            <type>text/plain</type>
            <size>78167</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4YzIyODBkYTUwODQzYTYzYmRkLi4wYjVkYjVjMjk5ZGJm
M2YxNTgzNzUyODBhYTNlMGFjY2YxYTM5N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTc4OSw2ICsxNzg5LDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNj
cmlwdEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1l
dGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2
RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2
RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQ
YXJhbXMuaCAqLzsgfTsKKwkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMu
aCAqLzsgfTsKIAkJRTMyNTk1NjQyMUZEQTJDOTAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLzsg
fTsKIAkJRTMyNUEzNjAyMjIxMTU5MDAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVBMzVG
MjIyMTE1OEEwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi87IH07CiAJCUUz
MjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEg
LyogWWFyckVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00OTQ0LDYgKzQ5NDUsNyBAQAogCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3
MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTbmlwcGV0UGFyYW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRM
U25pcHBldFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExTbmlwcGV0UGFyYW1zLmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZU
TFNuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25p
cHBldFBhcmFtcy5oOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAv
KiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNzIsNiArNzI3NCw3IEBACiAJCQkJQTFENzky
RjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLywKIAkJCQlBMUQ3OTJG
ODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywK
IAkJCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmggKi8sCisJCQkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmggKi8sCiAJCQkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8sCiAJCQkJQTEyQkJGRjMxQjA0NEE5ODAw
NjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovLApAQCAtOTc1NSw2ICs5NzU4LDcgQEAKIAkJCQlB
MUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
MjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXgg
ZjAwYTY2YjA4MjI3NWY1MGMyMGZmZjZhZjgyNjEzYjY4YWUzMGFlOS4uNWI4YmVhYzI5MjRhMjg0
MWI5YWM4ZTcxYzI2ZDgwNmJiZjlkMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC00NSwxMiArNDQsNiBAQCBjb25zdGV4cHIgc2l6ZV90IGNhc2VGaXJzdEluZGV4
ID0gMTsKIGNvbnN0ZXhwciBzaXplX3QgbnVtZXJpY0luZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRs
Q29sbGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUNvbGxhdG9yKiBjb2xsYXRv
cikgY29uc3QKLXsKLSAgICBpZiAoY29sbGF0b3IpCi0gICAgICAgIHVjb2xfY2xvc2UoY29sbGF0
b3IpOwotfQotCiBJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Io
dm0sIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5oCmluZGV4IDY5Y2IzMjNlMjE0ZDBjYjViZDZiNzNkMTMwM2U5ZjI3NDNmMjJmNjMuLmMy
MGMyMDY2MmNkNTU0NGM3MjM2MGNkYjVhOTZhZWQ3MDlkMzA1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KLXN0cnVjdCBVQ29sbGF0b3I7Cisj
aW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhl
bHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc0LDkgKzc0LDcgQEAgY2xhc3MgSW50
bENvbGxhdG9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGVudW0gY2xh
c3MgU2Vuc2l0aXZpdHkgOiB1aW50OF90IHsgQmFzZSwgQWNjZW50LCBDYXNlLCBWYXJpYW50IH07
CiAgICAgZW51bSBjbGFzcyBDYXNlRmlyc3QgOiB1aW50OF90IHsgVXBwZXIsIExvd2VyLCBGYWxz
ZSB9OwogCi0gICAgc3RydWN0IFVDb2xsYXRvckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVUNvbGxhdG9yKikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVQ29sbGF0b3JEZWxl
dGVyID0gSUNVRGVsZXRlcjx1Y29sX2Nsb3NlPjsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
dXNhZ2VTdHJpbmcoVXNhZ2UpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vuc2l0aXZpdHlT
dHJpbmcoU2Vuc2l0aXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggN2RmYmMzNjdjZjRmYjQyOThhZGY2MTFk
MTJjNmFlMmY0Njc2MTM4NS4uOWI3MTg1YmJhZWVmMjg4OWUyNWFmNmVhNTQ4MWI4NjAwMjkxZmQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCkBAIC01MCwxMiArNTAsNiBAQCBjb25zdGV4cHIgc2l6ZV90IGhvdXJDeWNs
ZUluZGV4ID0gMTsKIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyaW5nU3lzdGVtSW5kZXggPSAyOwog
fQogCi12b2lkIEludGxEYXRlVGltZUZvcm1hdDo6VURhdGVGb3JtYXREZWxldGVyOjpvcGVyYXRv
cigpKFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0KSBjb25zdAotewotICAgIGlmIChkYXRlRm9ybWF0
KQotICAgICAgICB1ZGF0X2Nsb3NlKGRhdGVGb3JtYXQpOwotfQotCiBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3Jt
YXQodm0sIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDlkMjY3MWM4OWMyNGEwNjI3NjNiZWNjY2NjODQ4
MmRmMmM3NTc3ZWQuLmZlMmQzMTQwODFjY2Y4NjY4MzA2OTllZmU3MTk1NDNhYTEwY2ZjZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
PHVuaWNvZGUvdWRhdC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03OSw5ICs4MCw3IEBAIGNsYXNzIEludGxEYXRlVGlt
ZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNz
IFNlY29uZCA6IHVpbnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwogICAgIGVudW0g
Y2xhc3MgVGltZVpvbmVOYW1lIDogdWludDhfdCB7IE5vbmUsIFNob3J0LCBMb25nIH07CiAKLSAg
ICBzdHJ1Y3QgVURhdGVGb3JtYXREZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVE
YXRlRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVRGF0ZUZvcm1hdERlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVkYXRfY2xvc2U+OwogCiAgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRl
cm4oY29uc3QgU3RyaW5nVmlldyYpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgd2Vla2RheVN0
cmluZyhXZWVrZGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIyZjNhYjE3OTkyMmViYTgz
OGFhMjkzOC4uZmQ1NDdlMDNiMWQ4NjFlYTM5NjQzMjQ4NWE5MGI2NTFlMjBhM2E5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAKICNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTQyLDYgKzQzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxO
dW1iZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG4KIAogbmFtZXNwYWNlIEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29u
c3QgY2hhciogcmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07Citjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKIHN0cnVjdCBJbnRsTnVtYmVyRm9ybWF0RmllbGQg
ewpAQCAtNDksMTIgKzUxLDYgQEAgc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CiAgICAg
c2l6ZV90IHNpemU7CiB9OwogCi12b2lkIEludGxOdW1iZXJGb3JtYXQ6OlVOdW1iZXJGb3JtYXRE
ZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkgY29uc3QKLXsK
LSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7
Ci19Ci0KIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJ
bnRsTnVtYmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpAQCAtMTE5LDcgKzExNSw3IEBAIHN0YXRp
YyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY29uc3QgU3RyaW5nJiBjdXJyZW5jeSkK
ICAgICAvLyAxMS4xLjEgVGhlIGFic3RyYWN0IG9wZXJhdGlvbiBDdXJyZW5jeURpZ2l0cyAoY3Vy
cmVuY3kpCiAgICAgLy8gIklmIHRoZSBJU08gNDIxNyBjdXJyZW5jeSBhbmQgZnVuZHMgY29kZSBs
aXN0IGNvbnRhaW5zIGN1cnJlbmN5IGFzIGFuIGFscGhhYmV0aWMgY29kZSwKICAgICAvLyB0aGVu
IHJldHVybiB0aGUgbWlub3IgdW5pdCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW5j
eSBmcm9tIHRoZSBsaXN0OyBlbHNlIHJldHVybiAyLgotICAgIHN0ZDo6cGFpcjxjb25zdCBjaGFy
KiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0geworICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjpwYWlyPGNvbnN0IGNoYXIqLCB1bnNpZ25lZD4gY3VycmVuY3lNaW5vclVuaXRzW10g
PSB7CiAgICAgICAgIHsgIkJIRCIsIDMgfSwKICAgICAgICAgeyAiQklGIiwgMCB9LAogICAgICAg
ICB7ICJCWVIiLCAwIH0sCkBAIC0xNTMsNiArMTQ5LDEzMyBAQCBzdGF0aWMgdW5zaWduZWQgY29t
cHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgcmV0dXJuIDI7
CiB9CiAKKy8vIENyZWF0ZSBNZWFzdXJlVW5pdCBsaWtlIElDVTRKLgorY2xhc3MgTWVhc3VyZVVu
aXQgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBNZWFzdXJlVW5pdChBU0NJSUxpdGVyYWwgdHlw
ZSwgQVNDSUlMaXRlcmFsIHN1YlR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAg
ICwgbV9zdWJUeXBlKHN1YlR5cGUpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRl
cmFsIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdGV4cHIgQVNDSUlM
aXRlcmFsIHN1YlR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N1YlR5cGU7IH0KKworcHJpdmF0ZToK
KyAgICBBU0NJSUxpdGVyYWwgbV90eXBlOworICAgIEFTQ0lJTGl0ZXJhbCBtX3N1YlR5cGU7Cit9
OworCitzdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRl
bnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIHN0YXRpYyBjb25zdGV4
cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAgICAgeyAiYXJlYSJfcywgImFj
cmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJfcyB9LAorICAgICAgICB7ICJk
aWdpdGFsIl9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImNlbHNp
dXMiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGltZXRlciJfcyB9LAorICAgICAg
ICB7ICJkdXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7ICJhbmdsZSJfcywgImRlZ3Jl
ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZhaHJlbmhlaXQiX3MgfSwKKyAg
ICAgICAgeyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAiZm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJnYWxsb24iX3MgfSwKKyAg
ICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJf
cywgImdpZ2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJncmFtIl9zIH0sCisgICAg
ICAgIHsgImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAi
aG91ciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNoIl9zIH0sCisgICAgICAgIHsg
ImRpZ2l0YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxv
Ynl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dyYW0iX3MgfSwKKyAgICAgICAg
eyAibGVuZ3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImxp
dGVyIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYml0Il9zIH0sCisgICAgICAg
IHsgImRpZ2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJt
ZXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlIl9zIH0sCisgICAgICAgIHsg
Imxlbmd0aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisgICAgICAgIHsgInZvbHVtZSJf
cywgIm1pbGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWlsbGltZXRlciJf
cyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vjb25kIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAi
bW9udGgiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNlIl9zIH0sCisgICAgICAgIHsg
ImNvbmNlbnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAicGV0
YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5kIl9zIH0sCisgICAgICAgIHsg
ImR1cmF0aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJzdG9uZSJf
cyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJfcyB9LAorICAgICAgICB7ICJk
aWdpdGFsIl9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJ3ZWVr
Il9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3MgfSwKKyAgICAgICAgeyAiZHVy
YXRpb24iX3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6
Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oc2ltcGxlVW5pdHMpLCBzdGQ6OmVuZChzaW1wbGVVbml0
cyksIHVuaXRJZGVudGlmaWVyLAorICAgICAgICBbXSAoY29uc3QgTWVhc3VyZVVuaXQmIHVuaXQs
IGNvbnN0IFN0cmluZ1ZpZXcmIHVuaXRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAodW5p
dElkZW50aWZpZXIuaXM4Qml0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBv
aW50Q29tcGFyZSh1bml0LnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIHVuaXQuc3ViVHlwZSgpLmxl
bmd0aCgpLCB1bml0SWRlbnRpZmllci5jaGFyYWN0ZXJzOCgpLCB1bml0SWRlbnRpZmllci5sZW5n
dGgoKSkgPCAwOworICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBvaW50Q29tcGFyZSh1bml0
LnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIHVuaXQuc3ViVHlwZSgpLmxlbmd0aCgpLCB1bml0SWRl
bnRpZmllci5jaGFyYWN0ZXJzMTYoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAg
ICAgICAgfSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IHN0ZDo6ZW5kKHNpbXBsZVVuaXRzKSkgewor
ICAgICAgICBpZiAoIVdURjo6Y29kZVBvaW50Q29tcGFyZShpdGVyYXRvci0+c3ViVHlwZSgpLmNo
YXJhY3RlcnMoKSwgaXRlcmF0b3ItPnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIu
Y2hhcmFjdGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpKQorICAgICAgICAgICAgcmV0
dXJuICppdGVyYXRvcjsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworY2xh
c3MgV2VsbEZvcm1lZFVuaXQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlbGxGb3JtZWRVbml0
KE1lYXN1cmVVbml0IG51bWVyYXRvcikKKyAgICAgICAgOiBtX251bWVyYXRvcihudW1lcmF0b3Ip
CisgICAgeworICAgIH0KKworICAgIFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0IG51bWVyYXRv
ciwgTWVhc3VyZVVuaXQgZGVub21pbmF0b3IpCisgICAgICAgIDogbV9udW1lcmF0b3IobnVtZXJh
dG9yKQorICAgICAgICAsIG1fZGVub21pbmF0b3IoZGVub21pbmF0b3IpCisgICAgeworICAgIH0K
KworICAgIE1lYXN1cmVVbml0IG51bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtZXJhdG9y
OyB9CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9kZW5vbWluYXRvcjsgfQorcHJpdmF0ZToKKyAgICBNZWFzdXJlVW5pdCBtX251bWVyYXRv
cjsKKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gbV9kZW5vbWluYXRvcjsKK307CisKK3N0YXRp
YyBPcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmlu
Z1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllcgorICAgIGlmIChhdXRvIHVuaXQgPSBzYW5j
dGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIodW5pdElkZW50aWZpZXIpKQorICAgICAgICByZXR1
cm4gV2VsbEZvcm1lZFVuaXQodW5pdC52YWx1ZSgpKTsKKworICAgIC8vIElmIHRoZSBzdWJzdHJp
bmcgIi1wZXItIiBkb2VzIG5vdCBvY2N1ciBleGFjdGx5IG9uY2UgaW4gdW5pdElkZW50aWZpZXIs
IHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gcGVyID0gU3RyaW5nVmlldygiLXBlci0iX3Mp
OworICAgIGF1dG8gcG9zID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOworICAgIGlmIChwb3Mg
PT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IHBvczIgPSB1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zICsgcGVyLmxlbmd0aCgpKTsKKyAg
ICBpZiAocG9zMiAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgLy8gSWYgdGhlIHJlc3VsdCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRp
ZmllcihudW1lcmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIG51
bWVyYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZygwLCBwb3MpOworICAgIGF1dG8gbnVt
ZXJhdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpOwor
ICAgIGlmICghbnVtZXJhdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIo
ZGVub21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIGRlbm9t
aW5hdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvcyArIHBlci5sZW5ndGgoKSk7Cisg
ICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIo
ZGVub21pbmF0b3IpOworICAgIGlmICghZGVub21pbmF0b3JVbml0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQu
dmFsdWUoKSwgZGVub21pbmF0b3JVbml0LnZhbHVlKCkpOworfQorCiAvLyBodHRwczovL3RjMzku
Z2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKQEAgLTE5
MSwyMCArMzE0LDI1IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZv
cm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX2xvY2FsZSA9
IHJlc3VsdC5nZXQoImxvY2FsZSJfcyk7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGlu
aXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6
ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIG1fbnVtYmVyaW5nU3lzdGVtID0gcmVzdWx0LmdldCgibnUiX3MpOwog
Ci0gICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQi
LCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJj
ZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFsIik7CisgICAgLy8gU2V0TnVtYmVyRm9y
bWF0VW5pdE9wdGlvbnMoaW50bE9iamVjdCwgb3B0aW9ucykKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLXNldG51bWJlcmZvcm1hdHVuaXRvcHRpb25zCisKKyAgICBTdHJpbmcg
c3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5jeSIs
ICJ1bml0IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwi
LCBcImN1cnJlbmN5XCIsIG9yIFwidW5pdFwiIiwgImRlY2ltYWwiKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIGlmIChzdHlsZVN0cmluZyA9PSAiZGVjaW1h
bCIpCisgICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIl9zKQogICAgICAgICBtX3N0eWxl
ID0gU3R5bGU6OkRlY2ltYWw7Ci0gICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInBlcmNlbnQi
KQorICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50Il9zKQogICAgICAgICBtX3N0
eWxlID0gU3R5bGU6OlBlcmNlbnQ7Ci0gICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gImN1cnJl
bmN5IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAiY3VycmVuY3kiX3MpCiAgICAgICAg
IG1fc3R5bGUgPSBTdHlsZTo6Q3VycmVuY3k7CisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0g
InVuaXQiX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6VW5pdDsKICAgICBlbHNlCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0yMTIsNyArMzQwLDcgQEAgdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
ICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0
aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhh
PigpKSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9y
bWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kg
Y29kZSJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjks
NjAgKzM1NywyNjggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgY3VycmVuY3lE
aWdpdHMgPSBjb21wdXRlQ3VycmVuY3lEaWdpdHMoY3VycmVuY3kpOwogICAgIH0KIAotICAgIFN0
cmluZyBjdXJyZW5jeURpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIp
LCB7ICJjb2RlIiwgInN5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUg
ZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1ib2wiKTsKKyAg
ICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3Bs
YXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFycm93U3ltYm9sIiwgIm5hbWUiIH0sICJjdXJy
ZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIFwibmFycm93
U3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5bWJvbCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7
Ci0gICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gImNvZGUiKQorICAgICAgICBp
ZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIl9zKQogICAgICAgICAgICAgbV9jdXJy
ZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OkNvZGU7Ci0gICAgICAgIGVsc2UgaWYgKGN1
cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIikKKyAgICAgICAgZWxzZSBpZiAoY3VycmVu
Y3lEaXNwbGF5U3RyaW5nID09ICJzeW1ib2wiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlz
cGxheSA9IEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5j
eURpc3BsYXlTdHJpbmcgPT0gIm5hbWUiKQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3Bs
YXlTdHJpbmcgPT0gIm5hcnJvd1N5bWJvbCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lEaXNw
bGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w7CisgICAgICAgIGVsc2UgaWYgKGN1
cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFtZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lE
aXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpOYW1lOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtSW50
ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEp
OworICAgIFN0cmluZyBjdXJyZW5jeVNpZ25TdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5U2ln
biIpLCB7ICJzdGFuZGFyZCIsICJhY2NvdW50aW5nIiB9LCAiY3VycmVuY3lTaWduIG11c3QgYmUg
ZWl0aGVyIFwic3RhbmRhcmRcIiBvciBcImFjY291bnRpbmdcIiIsICJzdGFuZGFyZCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxl
OjpDdXJyZW5jeSkgeworICAgICAgICBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJzdGFuZGFy
ZCJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpTdGFuZGFy
ZDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lTaWduU3RyaW5nID09ICJhY2NvdW50aW5nIl9z
KQorICAgICAgICAgICAgbV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
IAotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9
PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAwOworICAgIFN0cmluZyB1bml0
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bml0IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBPcHRpb25hbDxXZWxsRm9ybWVkVW5p
dD4gd2VsbEZvcm1lZFVuaXQ7CisgICAgaWYgKCF1bml0LmlzTnVsbCgpKSB7CisgICAgICAgIHdl
bGxGb3JtZWRVbml0ID0gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKHVuaXQpOworICAgICAgICBp
ZiAoIXdlbGxGb3JtZWRVbml0KSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInVuaXQgaXMgbm90IGEgd2VsbC1mb3JtZWQgdW5pdCBpZGVudGlmaWVy
Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3VuaXQgPSB1
bml0OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBt
dXN0IGJlIGEgc3RyaW5nIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICBTdHJpbmcgdW5pdERpc3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXREaXNwbGF5
IiksIHsgInNob3J0IiwgIm5hcnJvdyIsICJsb25nIiB9LCAidW5pdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiLCBcIm5hcnJvd1wiLCBvciBcImxvbmdcIiIsICJzaG9ydCIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OlVuaXQpIHsKKyAgICAgICAgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJzaG9ydCJfcykK
KyAgICAgICAgICAgIG1fdW5pdERpc3BsYXkgPSBVbml0RGlzcGxheTo6U2hvcnQ7CisgICAgICAg
IGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJuYXJyb3ciX3MpCisgICAgICAgICAgICBt
X3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6Ok5hcnJvdzsKKyAgICAgICAgZWxzZSBpZiAodW5p
dERpc3BsYXlTdHJpbmcgPT0gImxvbmciX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KIAotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQ7Ci0gICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KQotICAgICAgICBtYXhp
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRz
LCBjdXJyZW5jeURpZ2l0cyk7Ci0gICAgZWxzZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6UGVyY2Vu
dCkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IG1pbmltdW1GcmFjdGlv
bkRpZ2l0czsKLSAgICBlbHNlCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQg
PSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsKKyAgICB1bnNpZ25lZCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/
IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDog
KG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpID8gMCA6IDM7CiAKLSAgICB1bnNpZ25lZCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsK
KyAgICBTdHJpbmcgbm90YXRpb25TdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIHsgInN0
YW5kYXJkIiwgInNjaWVudGlmaWMiLCAiZW5naW5lZXJpbmciLCAiY29tcGFjdCIgfSwgIm5vdGF0
aW9uIG11c3QgYmUgZWl0aGVyIFwic3RhbmRhcmRcIiwgXCJzY2llbnRpZmljXCIsIFwiZW5naW5l
ZXJpbmdcIiwgb3IgXCJjb21wYWN0XCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChub3RhdGlvblN0cmluZyA9PSAic3RhbmRhcmQi
X3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OlN0YW5kYXJkOworICAgIGVs
c2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJzY2llbnRpZmljIl9zKQorICAgICAgICBtX25vdGF0
aW9uID0gSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3Ry
aW5nID09ICJlbmdpbmVlcmluZyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlv
bjo6RW5naW5lZXJpbmc7CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJpbmcgPT0gImNvbXBhY3Qi
X3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkNvbXBhY3Q7CisgICAgZWxz
ZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIEpTVmFsdWUgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIHNl
dE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQs
IG1fbm90YXRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0
KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZp
Y2FudERpZ2l0cyIpKTsKKyAgICBTdHJpbmcgY29tcGFjdERpc3BsYXkgPSBpbnRsU3RyaW5nT3B0
aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNv
bXBhY3REaXNwbGF5IiksIHsgInNob3J0IiwgImxvbmciIH0sICJjb21wYWN0RGlzcGxheSBtdXN0
IGJlIGVpdGhlciBcInNob3J0XCIgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNp
Z25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAg
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgeworICAgICAgICBp
ZiAoY29tcGFjdERpc3BsYXkgPT0gInNob3J0Il9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlz
cGxheSA9IENvbXBhY3REaXNwbGF5OjpTaG9ydDsKKyAgICAgICAgZWxzZSBpZiAoY29tcGFjdERp
c3BsYXkgPT0gImxvbmciX3MpCisgICAgICAgICAgICBtX2NvbXBhY3REaXNwbGF5ID0gQ29tcGFj
dERpc3BsYXk6Okxvbmc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIAogICAgIFRyaVN0YXRlIHVzZUdyb3VwaW5nID0gaW50bEJvb2xlYW5P
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZhbHNlOwogCisg
ICAgU3RyaW5nIHNpZ25EaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCB7ICJhdXRv
IiwgIm5ldmVyIiwgImFsd2F5cyIsICJleGNlcHRaZXJvIiB9LCAic2lnbkRpc3BsYXkgbXVzdCBi
ZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNlcHRaZXJv
XCIiLCAiYXV0byIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgaWYgKHNpZ25EaXNwbGF5ID09ICJhdXRvIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0g
U2lnbkRpc3BsYXk6OkF1dG87CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0gIm5ldmVyIl9z
KQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6Ok5ldmVyOworICAgIGVsc2Ug
aWYgKHNpZ25EaXNwbGF5ID09ICJhbHdheXMiX3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBT
aWduRGlzcGxheTo6QWx3YXlzOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJleGNlcHRa
ZXJvIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm87
CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIE9wdGlv
bnMgYXJlIG9idGFpbmVkLiBDb25maWd1cmUgZm9ybWF0dGVyIGhlcmUuCisKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgLy8gQ29uc3RydWN0aW5nIElDVSBOdW1iZXIgU2tl
bGV0b25zIHRvIGNvbmZpZ3VyZSBVTnVtYmVyRm9ybWF0dGVyLgorICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCisKKyAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9u
QnVpbGRlcjsKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7CisKKyAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpE
ZWNpbWFsOgorICAgICAgICAvLyBObyBza2VsZXRvbiBpcyBuZWVkZWQuCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgcGVyY2VudCBzY2FsZS8xMDAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTdHlsZTo6Q3VycmVuY3k6IHsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBjdXJyZW5jeS8iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChjdXJyZW5j
eSk7CisKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9i
L21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
dW5pdC13aWR0aAorICAgICAgICBzd2l0Y2ggKG1fY3VycmVuY3lEaXNwbGF5KSB7CisgICAgICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpDb2RlOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWlzby1jb2RlIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKKyAgICAgICAgICAgIC8v
IERlZmF1bHQgb3B0aW9uLiBEbyBub3Qgc3BlY2lmeSB1bml0LXdpZHRoLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6CisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5h
bWU6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lk
dGgtZnVsbC1uYW1lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBTdHlsZTo6VW5pdDogeworICAgICAgICAvLyBUaGUgbWVh
c3VyZS11bml0IHN0ZW0gdGFrZXMgb25lIHJlcXVpcmVkIG9wdGlvbjogdGhlIHVuaXQgaWRlbnRp
ZmllciBvZiB0aGUgdW5pdCB0byBiZSBmb3JtYXR0ZWQuCisgICAgICAgIC8vIFRoZSBmdWxsIHVu
aXQgaWRlbnRpZmllciBpcyByZXF1aXJlZDogYm90aCB0aGUgdHlwZSBhbmQgdGhlIHN1YnR5cGUg
KGZvciBleGFtcGxlLCBsZW5ndGgtbWV0ZXIpLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCN1bml0CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgbWVhc3VyZS11bml0LyIpOworICAgICAgICBhdXRvIG51bWVyYXRvclVuaXQg
PSB3ZWxsRm9ybWVkVW5pdC0+bnVtZXJhdG9yKCk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQobnVtZXJhdG9yVW5pdC50eXBlKCksICctJywgbnVtZXJhdG9yVW5pdC5zdWJUeXBlKCkp
OworICAgICAgICBpZiAoYXV0byBkZW5vbWluYXRvclVuaXRWYWx1ZSA9IHdlbGxGb3JtZWRVbml0
LT5kZW5vbWluYXRvcigpKSB7CisgICAgICAgICAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IGRl
bm9taW5hdG9yVW5pdFZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHBlci1tZWFzdXJlLXVuaXQvIik7CisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKGRlbm9taW5hdG9yVW5pdC50eXBlKCksICctJywgZGVub21pbmF0b3JV
bml0LnN1YlR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCN1bml0LXdpZHRoCisgICAgICAgIHN3aXRjaCAobV91bml0
RGlzcGxheSkgeworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1zaG9ydCIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Ok5hcnJvdzoKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ci
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25nOgor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1
bGwtbmFtZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0
b25zLm1kI2ludGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IGludGVnZXItd2lkdGgvIik7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgoV1RGOjpJQ1U6
Om1ham9yVmVyc2lvbigpID49IDY3KSA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2Nywg
dXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgnMCcpOworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3Jt
YXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czogewor
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVy
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWduaWZp
Y2FudC1kaWdpdHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyAn
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0
cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgLy8gRG8gbm90IHNldCBh
bnl0aGluZy4KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFy
c2UvbnVtYmVycy9za2VsZXRvbnMubWQjbm90YXRpb24KKyAgICBzd2l0Y2ggKG1fbm90YXRpb24p
IHsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHNjaWVudGlmaWMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIGVuZ2luZWVyaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpDb21wYWN0OgorICAgICAgICBzd2l0Y2ggKG1fY29tcGFjdERpc3BsYXkpIHsKKyAg
ICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LWxvbmciKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ24tZGlzcGxheQorICAgIC8vIEN1cnJl
bmN5U2lnbidzIGFjY291bnRpbmcgaXMgYSBwYXJ0IG9mIFNpZ25EaXNwbGF5IGluIElDVS4KKyAg
ICBib29sIHVzZUFjY291bnRpbmcgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kgJiYgbV9j
dXJyZW5jeVNpZ24gPT0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nKTsKKyAgICBzd2l0Y2ggKG1f
c2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICBpZiAo
dXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgc2lnbi1hY2NvdW50aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hdXRvIik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHNpZ24tbmV2ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlz
cGxheTo6QWx3YXlzOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWFsd2F5cyIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWx3YXlzIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4
Y2VwdFplcm86CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmctZXhjZXB0LXplcm8iKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiBzaWduLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICgh
bV91c2VHcm91cGluZykKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBn
cm91cC1vZmYiKTsKKworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0
cmluZygpOworICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9z
ZSwgbV9sb2NhbGUpOworICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6
dmVyYm9zZSwgc2tlbGV0b24pOworICAgIFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9u
KTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZv
cm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0
dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHNrZWxldG9uVmlldy51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBtX2xv
Y2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAg
c3dpdGNoIChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTI5OSw2NSAr
NjM1LDExMyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6U3ltYm9sOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1i
b2w6CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU6CiAgICAgICAgICAgICBzdHlsZSA9
IFVOVU1fQ1VSUkVOQ1lfUExVUkFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBzd2l0Y2ggKG1fY3VycmVuY3lTaWduKSB7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWduOjpT
dGFuZGFyZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZzoKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBO
dW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoICht
X25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICBjYXNlIEludGxO
b3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgY2FzZSBTaWdu
RGlzcGxheTo6QWx3YXlzOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6
OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3Bl
bihzdHlsZSwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKICAgICAgICAgdW51
bV9zZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NP
REUsIFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3Vy
cmVuY3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZv
cm1hdCJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KCFtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgeworCisgICAgc3dpdGNoIChtX3JvdW5kaW5n
VHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRF
R0VSX0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0
cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1f
bWluaW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVl
KTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
TUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAg
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lH
TklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxp
emUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3Vz
ZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CisjZW5kaWYKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWx1ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyNpZiBIQVZFKElDVV9V
X05VTUJFUl9GT1JNQVRURVIpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJl
ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1
ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVy
LmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGEgbnVtYmVyLiJfcyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7CiAgICAg
YXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3Vi
bGUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwotCisjZW5k
aWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KIAogLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2
YWx1ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIApAQCAtMzY4LDEwICs3NTIsMjUgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKQog
ICAgIGF1dG8qIHJhd1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyNpZiBI
QVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVy
KTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVk
TnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5n
ZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwg
JnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZf
cmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworI2Vsc2UKKyAg
ICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0KCks
IHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7Ci0KKyNlbmRpZgog
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCkBAIC0zODQsNiAr
NzgzLDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxl
IHN0eWxlKQogICAgICAgICByZXR1cm4gInBlcmNlbnQiX3M7CiAgICAgY2FzZSBTdHlsZTo6Q3Vy
cmVuY3k6CiAgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgY2FzZSBTdHlsZTo6VW5p
dDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CkBAIC0zOTYsNiArNzk3LDgg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhD
dXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICAgICAgcmV0dXJuICJjb2RlIl9zOwogICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgIHJldHVybiAic3ltYm9sIl9z
OworICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgIHJldHVy
biAibmFycm93U3ltYm9sIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAg
ICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQpAQCAtNDAzLDYgKzgwNiw3NiBAQCBBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlz
cGxheSBjdXJyZW5jeURpcwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAor
QVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlv
biBub3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKG5vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90
YXRpb246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9zOworICAgIGNhc2Ug
SW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgICAgICByZXR1cm4gInNjaWVudGlmaWMiX3M7
CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgICAgICByZXR1cm4gImVu
Z2luZWVyaW5nIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICBy
ZXR1cm4gImNvbXBhY3QiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1i
ZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQor
eworICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CisgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0
YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9zOworICAgIGNhc2UgQ3VycmVuY3lT
aWduOjpBY2NvdW50aW5nOgorICAgICAgICByZXR1cm4gImFjY291bnRpbmciX3M7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5n
KFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQoreworICAgIHN3aXRjaCAodW5pdERpc3BsYXkpIHsK
KyAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsK
KyAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9z
OworICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERp
c3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCit7CisgICAgc3dpdGNo
IChjb21wYWN0RGlzcGxheSkgeworICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAg
ICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6Okxvbmc6Cisg
ICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkp
Cit7CisgICAgc3dpdGNoIChzaWduRGlzcGxheSkgeworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkF1
dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZl
cjoKKyAgICAgICAgcmV0dXJuICJuZXZlciJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdh
eXM6CisgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4
Y2VwdFplcm86CisgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQor
CiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTQxMSwx
OSArODg0LDM4IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdT
eXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOwogICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKLSAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3Vy
cmVuY3kpIHsKKyAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpEZWNpbWFs
OgorICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5
bGU6OkN1cnJlbmN5OgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3Vy
cmVuY3kpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lEaXNwbGF5KSkpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24i
KSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeVNpZ25TdHJpbmcobV9jdXJyZW5jeVNp
Z24pKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBtX3VuaXQpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdERpc3BsYXkiKSwganNOb250
cml2aWFsU3RyaW5nKHZtLCB1bml0RGlzcGxheVN0cmluZyhtX3VuaXREaXNwbGF5KSkpOworICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5p
bXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21p
bmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlciht
X21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cykgewotICAgICAgICBBU1NFUlQobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAg
IHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5p
bXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVy
KG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERp
Z2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91
bmRpbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91
c2VHcm91cGluZykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25T
dHJpbmcobV9ub3RhdGlvbikpKTsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246
OkNvbXBhY3QpCisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29t
cGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CiAg
ICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTQzMiw3ICs5MjQsNyBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQp
CiAgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0sIHRoaXMsIGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBB
U0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91
YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9y
bWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZh
bHVlKQogewogICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVM
RDoKQEAgLTQ0NSwyMCArOTM3LDMxIEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJp
bmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlIHZhbHVlKQogICAgICAgICByZXR1
cm4gImZyYWN0aW9uIl9zOwogICAgIGNhc2UgVU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoK
ICAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1C
T0xfRklFTEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRTZXBhcmF0b3IiX3M7CisgICAgY2Fz
ZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51
c1NpZ24iX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxEOgorICAgICAgICByZXR1cm4g
ImV4cG9uZW50SW50ZWdlciJfczsKICAgICBjYXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJ
RUxEOgogICAgICAgICByZXR1cm4gImdyb3VwIl9zOwogICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9G
SUVMRDoKICAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKICAgICBjYXNlIFVOVU1fUEVSQ0VO
VF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJwZXJjZW50U2lnbiJfczsKKyAgICAgICAgLy8gSWYg
dGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgorICAgICAgICAv
LyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCisgICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50
bE51bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7
CiAgICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAi
bWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0
KHZhbHVlKSA/ICJtaW51c1NpZ24iX3MgOiAicGx1c1NpZ24iX3M7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfRk9STUFUVEVSKQorICAgIGNhc2UgVU5VTV9NRUFTVVJFX1VOSVRfRklFTEQ6CisgICAg
ICAgIHJldHVybiAidW5pdCJfczsKKyAgICBjYXNlIFVOVU1fQ09NUEFDVF9GSUVMRDoKKyAgICAg
ICAgcmV0dXJuICJjb21wYWN0Il9zOworI2VuZGlmCiAgICAgLy8gVGhlc2Ugc2hvdWxkIG5vdCBz
aG93IHVwIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlbSBpbiBOdW1iZXJG
b3JtYXQgb3B0aW9ucy4KICAgICAvLyBJZiB0aGV5IGRvLCB0aGV5IGRvbid0IGZpdCB3ZWxsIGlu
dG8gYW55IG9mIGtub3duIHBhcnQgdHlwZXMsIHNvIGNvbnNpZGVyIGl0IGFuICJ1bmtub3duIi4K
ICAgICBjYXNlIFVOVU1fUEVSTUlMTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lN
Qk9MX0ZJRUxEOgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgotICAgIGNhc2Ug
VU5VTV9FWFBPTkVOVF9GSUVMRDoKICAgICAvLyBBbnkgbmV3ZXIgYWRkaXRpb25zIHRvIHRoZSBV
TnVtYmVyRm9ybWF0RmllbGRzIGVudW0gc2hvdWxkIGp1c3QgYmUgY29uc2lkZXJlZCBhbiAidW5r
bm93biIgcGFydC4KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gInVua25vd24iX3M7CkBA
IC00NjYsNyArOTY5LDcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVt
YmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuICJ1bmtub3du
Il9zOwogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Zm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvciwgSlNBcnJheSogcGFy
dHMsIEpTU3RyaW5nKiB1bml0KQordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUgc3R5bGUsIGRvdWJs
ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiBpdGVy
YXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC00NzgsNyArOTgxLDEyIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgVmVj
dG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZCwgMzI+IGZpZWxkcyhzdHJpbmdMZW5ndGgsIGxpdGVy
YWxGaWVsZCk7CiAgICAgaW50MzJfdCBiZWdpbkluZGV4ID0gMDsKICAgICBpbnQzMl90IGVuZElu
ZGV4ID0gMDsKLSAgICBhdXRvIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRv
ciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byBmaWVsZFR5cGUgPSBpdGVyYXRvci5uZXh0KGJlZ2luSW5kZXgs
IGVuZEluZGV4LCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUg
ZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgewogICAgICAgICBzaXplX3Qgc2l6ZSA9IGVuZEluZGV4
IC0gYmVnaW5JbmRleDsKICAgICAgICAgZm9yIChhdXRvIGkgPSBiZWdpbkluZGV4OyBpIDwgZW5k
SW5kZXg7ICsraSkgewpAQCAtNDg2LDcgKzk5NCwxMiBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bAogICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5zaXplID49IHNpemUpCiAgICAgICAgICAgICAg
ICAgZmllbGRzW2ldID0gSW50bE51bWJlckZvcm1hdEZpZWxkIHsgZmllbGRUeXBlLCBzaXplIH07
CiAgICAgICAgIH0KLSAgICAgICAgZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJh
dG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgICAgICBmaWVsZFR5cGUgPSBpdGVyYXRvci5uZXh0KGJlZ2luSW5kZXgsIGVuZElu
ZGV4LCBzdGF0dXMpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0
ZSBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJsaXRlcmFsIl9zKTsKQEAgLTUwMCw3ICsxMDEzLDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmwKICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50
eXBlOwogICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxk
c1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50
SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxk
VHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJl
ckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2YWx1ZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5
bGUsIHZhbHVlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZv
cm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAgICAg
IEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlw
ZSk7CkBAIC01MTUsMjAgKzEwMjgsNDAgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9y
bWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkSXRyID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3Np
dGVyX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3Bl
biBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24g
aXRlcmF0b3IiX3MpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OworI2lmIEhBVkUo
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwor
ICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4o
dW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9y
bWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgp
LCByZXN1bHQpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX3Jlc3VsdEdl
dEFsbEZpZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJlci5nZXQoKSwgZmllbGRJdHIuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmllbGRJdHIuZ2V0KCkp
OworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIHN0YXR1cyA9IGNhbGxC
dWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcywgbV9udW1i
ZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQsIGZpZWxkSXRyLmdldCgpKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICBJbnRsRmllbGRJdGVyYXRvciBpdGVyYXRvcihmaWVsZEl0
ci5nZXQoKSk7CisjZW5kaWYKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3Vs
dCk7CiAKQEAgLTUzNiw3ICsxMDY5LDcgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWwKICAgICBp
ZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOwogCi0gICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
dmFsdWUsIHJlc3VsdFN0cmluZywgZmllbGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBtX3N0eWxlLCB2YWx1ZSwgcmVzdWx0U3RyaW5n
LCBpdGVyYXRvciwgcGFydHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICByZXR1cm4gcGFydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNDMwNGIyMmE4YzZhNTExZjc0ZTJiZGNiMDUzODhk
NWI2NWI3MzQ3Ni4uZWZkYTM5ZTE3MzlkMTg5Y2NjOWMxZmMzNjBiNTcxYzQwZTUxZmVkNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApA
QCAtMjgsMTEgKzI4LDI4IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHVu
aWNvZGUvdW51bS5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisK
KyNpZiAhZGVmaW5lZChIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIpCisvLyBVTlVNX0NPTVBB
Q1RfRklFTEQgYW5kIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEIGFyZSBhdmFpbGFibGUgYWZ0ZXIg
SUNVIDY0LgorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY0CisjZGVmaW5lIEhBVkVf
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCisjaWYgSEFWRShJQ1Vf
VV9OVU1CRVJfRk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5o
PgorI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBJbnRsRmllbGRJdGVyYXRvcjsK
IGNsYXNzIEpTQm91bmRGdW5jdGlvbjsKIAorZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDog
dWludDhfdCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5k
aW5nIH07CitlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgU2Np
ZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIEludGxU
eXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIElu
dGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOwor
CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwpAQCAtNjQsNyAr
ODEsMTQgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBK
U0JvdW5kRnVuY3Rpb24qKTsKIAotICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVs
ZFBvc2l0aW9uSXRlcmF0b3IqLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsK
KyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJl
bmN5LCBVbml0IH07CisKKyAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqLCBTdHlsZSwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50
bEZpZWxkSXRlcmF0b3ImLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJl
ckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3Qq
LCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiBwcml2YXRlOgogICAgIElu
dGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTczLDIyICs5NywzMyBAQCBjbGFz
cyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAg
ICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6ZV90
KTsKIAotICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2VudCwg
Q3VycmVuY3kgfTsKLSAgICBlbnVtIGNsYXNzIEN1cnJlbmN5RGlzcGxheSA6IHVpbnQ4X3QgeyBD
b2RlLCBTeW1ib2wsIE5hbWUgfTsKLQotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsK
KyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5RGlzcGxheSA6IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2ws
IE5hcnJvd1N5bWJvbCwgTmFtZSB9OworICAgIGVudW0gY2xhc3MgQ3VycmVuY3lTaWduIDogdWlu
dDhfdCB7IFN0YW5kYXJkLCBBY2NvdW50aW5nIH07CisgICAgZW51bSBjbGFzcyBVbml0RGlzcGxh
eSA6IHVpbnQ4X3QgeyBTaG9ydCwgTmFycm93LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBDb21w
YWN0RGlzcGxheSA6IHVpbnQ4X3QgeyBTaG9ydCwgTG9uZyB9OworICAgIGVudW0gY2xhc3MgU2ln
bkRpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybyB9Owog
CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24pOwor
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwor
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3Bs
YXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3Bs
YXkpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+
IG1fbnVtYmVyRm9ybWF0OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICB1
c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2U+Owor
ICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtZl9jbG9z
ZVJlc3VsdD47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJG
b3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNlbHNlCisgICAgdXNpbmcgVU51
bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+PiBtX251bWJlckZv
cm1hdDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIFN0cmluZyBtX251bWJl
cmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcgbV91bml0Owog
ICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5zaWduZWQg
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgeyAzIH07CkBAIC05Niw3ICsxMzEsMTMgQEAgY2xhc3MgSW50bE51bWJlckZv
cm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6
OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CisgICAg
Q3VycmVuY3lTaWduIG1fY3VycmVuY3lTaWduOworICAgIFVuaXREaXNwbGF5IG1fdW5pdERpc3Bs
YXk7CisgICAgQ29tcGFjdERpc3BsYXkgbV9jb21wYWN0RGlzcGxheTsKKyAgICBJbnRsTm90YXRp
b24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6U3RhbmRhcmQgfTsKKyAgICBTaWduRGlzcGxh
eSBtX3NpZ25EaXNwbGF5OwogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBJ
bnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rp
b25EaWdpdHMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjg1Y2RhMjUyN2MzZjY5OWM5ZjVhNzZkMTcxZjVjYWJkZmFiMmYxOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyAgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3Zv
aWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEludGxUeXBlKiBpbnRsSW5zdGFuY2UsIEpTT2JqZWN0KiBvcHRpb25zLCB1bnNpZ25lZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
SW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUgPSBv
cHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworCisgICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25z
LT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNp
Z25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVt
SW50ZWdlckRpZ2l0czsKKworICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEsIDEpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIx
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERp
Z2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAh
bWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdp
dHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNBY3R1YWxEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFj
dGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNBY3R1YWxEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKKyAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkNv
bXBhY3RSb3VuZGluZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGxJbnN0YW5j
ZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdDsKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKK30KKworY2xhc3MgSW50bEZpZWxkSXRl
cmF0b3IgeworcHVibGljOgorICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEludGxGaWVsZEl0ZXJh
dG9yKTsKKworICAgIGV4cGxpY2l0IEludGxGaWVsZEl0ZXJhdG9yKFVGaWVsZFBvc2l0aW9uSXRl
cmF0b3IqIGl0ZXJhdG9yKQorICAgICAgICA6IG1faXRlcmF0b3IoaXRlcmF0b3IpCisgICAgewor
ICAgIH0KKworICAgIGludDMyX3QgbmV4dChpbnQzMl90JiBiZWdpbkluZGV4LCBpbnQzMl90JiBl
bmRJbmRleCwgVUVycm9yQ29kZSYgc3RhdHVzKQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHN0YXR1cyk7CisgICAgICAgIHJldHVybiB1ZmllbGRwb3NpdGVyX25leHQobV9pdGVyYXRvciwg
JmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmlu
ZGV4IGM0OTlhZGExOWYzYWQ0YzJmODMwYWRjM2M1M2I4ZDVhNmMxZjU3NmYuLmU5ZDMyYTI4ZDBj
YmQ3OWY2NDEzZjc5MjU4MDEyMDYxMDE1NzJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgogCisjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBA
IC0zNSwyNSArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxQ
bHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVsZXMpIH07CiAKLXZvaWQg
SW50bFBsdXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxS
dWxlcyogcGx1cmFsUnVsZXMpIGNvbnN0Ci17Ci0gICAgaWYgKHBsdXJhbFJ1bGVzKQotICAgICAg
ICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Ci19Ci0KLXZvaWQgSW50bFBsdXJhbFJ1bGVz
OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJG
b3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9z
ZShudW1iZXJGb3JtYXQpOwotfQotCi1zdHJ1Y3QgVUVudW1lcmF0aW9uRGVsZXRlciB7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKFVFbnVtZXJhdGlvbiogZW51bWVyYXRpb24pIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoZW51bWVyYXRpb24pCi0gICAgICAgICAgICB1ZW51bV9jbG9zZShlbnVtZXJh
dGlvbik7Ci0gICAgfQotfTsKK3VzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVy
PHVlbnVtX2Nsb3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1cmFsUnVsZXM6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTI1LDM0ICsxMDgsOCBAQCB2
b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBUeXBlOjpPcmRp
bmFsIDogVHlwZTo6Q2FyZGluYWw7CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0
cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50ZWdlckRp
Z2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
ID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7
Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgo
bWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0
aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgc2V0TnVt
YmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywg
SW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRp
Z2l0czsKLQotICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRp
b25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Ci0KLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0
aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgfQogCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVN
X0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZz
dGF0dXMpKTsKQEAgLTE2MSwxNCArMTE4LDIwIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpIHsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwotICAgICAgICB1bnVtX3NldEF0dHJp
YnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywg
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBz
d2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFj
dGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZS
QUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRT
LCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0
cnVlKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwor
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhf
U0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
QEAgLTE5MSwxMSArMTU0LDE4IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBUeXBlOjpPcmRp
bmFsID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIp
LCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRz
IiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGln
aXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7Ci0gICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1T
aWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cy52
YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5oCmluZGV4IGIwMTVmZTgyYTBlNjkzYTBjYmQwODJiMjIwZjI1NWQ4MmFl
NzRiNzEuLmZhNDMzZGZhMjhjMGFmMzM1ODhjNTEyZjQzNDg0YTc3NWU0MGNiZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yNSw5
ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2lu
Y2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1
L0lDVUhlbHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUzLDYgKzU0LDkgQEAgY2xh
c3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAg
ICAgREVDTEFSRV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CisgICAg
ZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
SW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7
CisKICAgICB2b2lkIGluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0
aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpAQCAtNjYsMTIgKzcwLDggQEAgY2xhc3MgSW50
bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgZW51
bSBjbGFzcyBUeXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAgICBzdHJ1Y3Qg
VVBsdXJhbFJ1bGVzRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUGx1cmFsUnVs
ZXMqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0g
ICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAg
ICB1c2luZyBVUGx1cmFsUnVsZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1cGxydWxlc19jbG9zZT47
CisgICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRl
cj4gbV9wbHVyYWxSdWxlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51
bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OwpAQCAtODAsOCArODAsOSBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
dW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21p
bmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyB7IDMgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOworICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAg
IHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIEludGxSb3Vu
ZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0
cyB9OwogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKaW5kZXggOTFiMWJmYTE0MjU4OTFmN2MzYzg1NDRhMmI3NDk4MDMwZjdjNDZlNy4uOTA2
MmUyY2Q4ODRiODQyNTRkYzkwYzMyNzFlNjUyNTYxZTk1ZGZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
CkBAIC00MCwxOCArNDAsNiBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZvcm1hdEludGVy
bmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVuc2lvbktleXNbMV0gPSB7
ICJudSIgfTsKIH0KIAotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVUmVsYXRpdmVEYXRl
VGltZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIqIHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Ci17Ci0gICAgaWYgKHJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXIpCi0gICAgICAgIHVyZWxkYXRlZm10X2Nsb3NlKHJlbGF0aXZlRGF0
ZVRpbWVGb3JtYXR0ZXIpOwotfQotCi12b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1i
ZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkg
Y29uc3QKLXsKLSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1bnVtX2Nsb3NlKG51bWJl
ckZvcm1hdCk7Ci19Ci0KIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8q
IGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQ+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpAQCAt
MzA5LDcgKzI5Nyw4IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgYWJzVmFsdWUs
IGZvcm1hdHRlZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmluZyh2bSwgc2lu
Z3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bEZpZWxkSXRlcmF0b3Ig
ZmllbGRJdGVyYXRvcihpdGVyYXRvci5nZXQoKSk7CisgICAgICAgIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0
eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBw
YXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgK
aW5kZXggODViODFmYTgzOGQzNWVmMzNlZTljMGFlNmE1MDI3MGQxNmY4NTVkYS4uZTI3MTg3OTg1
OTdjYTcwNTVjMWNhM2RkZmJiOTlhMjFkNDEzYTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaApAQCAtNjgsMTIg
KzY4LDggQEAgY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgTG9uZywg
U2hvcnQsIE5hcnJvdyB9OwogCi0gICAgc3RydWN0IFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUmVsYXRpdmVEYXRlVGltZUZvcm1h
dHRlciopIGNvbnN0OwotICAgIH07Ci0gICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsK
LSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKLSAgICB9Owor
ICAgIHVzaW5nIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8
dXJlbGRhdGVmbXRfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNV
RGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJp
bmcoU3R5bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggZTEyZjQ4MTZjM2UxNDQyNTVjMWE0ZjUzMmEyODY3N2RkYjNkMjU1Ni4uZTI2MjFlZDk0
ZTU5ODQ5YTdhNmM4NzgwMGI1NWFkYzYwMDcyMjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPHd0Zi9M
YW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5o
PgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxw
ZXJzLmgiCkBAIC0zMDc2LDkgKzMwNzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoSlNHbG9iYWxPYgogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklDVVZlcnNpb24oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQogewotICAgIFVWZXJzaW9uSW5mbyB2ZXJzaW9uSW5m
bzsKLSAgICB1X2dldFZlcnNpb24odmVyc2lvbkluZm8pOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodmVyc2lvbkluZm9bMF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSkpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFzc2VydEVuYWJsZWQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402946</attachid>
            <date>2020-06-27 00:31:47 -0700</date>
            <delta_ts>2020-06-27 00:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627003146.patch</filename>
            <type>text/plain</type>
            <size>89896</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZmQwNThlODNiODZmNjVmMTAyNTY4Zjcz
ZjIxZTA5YTU5N2JjNzE4Li4wM2VjMjVlYTMxMjJhNTk3Nzk2ZWZmY2Q4MWJiMjVmNWEwNjZjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgdW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIElDVURlbGV0ZXIgZm9yIGNsZWFuZXIgSUNVIG9iamVjdCBkZWxldGlvbi4KKyAg
ICAgICAgQWRkIElDVTo6bWFqb3JWZXJzaW9uIGFuZCBJQ1U6Om1pbm9yVmVyc2lvbiB0byBzd2l0
Y2ggdGhlIHNrZWxldG9uIHN0cmluZyBpbiBJbnRsLk51bWJlckZvcm1hdC4KKyAgICAgICAgQWRk
IG1vcmUgZmVhdHVyZXMgZm9yIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKyAgICAg
ICAgKFdURjo6SUNVRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgw
ZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUz
MjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEw
MDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyog
REZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURB
NjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRB
MURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1
IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkw
MDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJl
Z0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFy
ckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcg
QEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0g
ZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
MkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBm
dGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExT
bmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUEx
IC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90
eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JF
RjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURD
MkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
QEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYx
M2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVu
aWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29u
c3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVy
aWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpv
cGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9y
KQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRs
Q29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxh
dG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1
YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi40Mzk3MjAxYTAxMmZlY2JhNmVjMmNjYjQwN2M0ZTQ1
ZjdkMjVlMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJh
c2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDog
dWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAg
IH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IFdURjo6SUNVRGVsZXRlcjx1Y29sX2Ns
b3NlPjsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdXNhZ2VTdHJpbmcoVXNhZ2UpOwogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKaW5kZXggN2RmYmMzNjdjZjRmYjQyOThhZGY2MTFkMTJjNmFlMmY0Njc2MTM4NS4uOWI3MTg1
YmJhZWVmMjg4OWUyNWFmNmVhNTQ4MWI4NjAwMjkxZmQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC01MCwxMiAr
NTAsNiBAQCBjb25zdGV4cHIgc2l6ZV90IGhvdXJDeWNsZUluZGV4ID0gMTsKIGNvbnN0ZXhwciBz
aXplX3QgbnVtYmVyaW5nU3lzdGVtSW5kZXggPSAyOwogfQogCi12b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6VURhdGVGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVEYXRlRm9ybWF0KiBkYXRlRm9y
bWF0KSBjb25zdAotewotICAgIGlmIChkYXRlRm9ybWF0KQotICAgICAgICB1ZGF0X2Nsb3NlKGRh
dGVGb3JtYXQpOwotfQotCiBJbnRsRGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVG
b3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmlu
ZGV4IDlkMjY3MWM4OWMyNGEwNjI3NjNiZWNjY2NjODQ4MmRmMmM3NTc3ZWQuLjhlZWY3MjU1N2Yw
Y2NkNzFjZmRhZGZmNTJiM2U3OGZjODhmYzdkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC03OSw5ICs4MCw3IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlY29uZCA6IHVpbnQ4X3QgeyBOb25l
LCBUd29EaWdpdCwgTnVtZXJpYyB9OwogICAgIGVudW0gY2xhc3MgVGltZVpvbmVOYW1lIDogdWlu
dDhfdCB7IE5vbmUsIFNob3J0LCBMb25nIH07CiAKLSAgICBzdHJ1Y3QgVURhdGVGb3JtYXREZWxl
dGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVEYXRlRm9ybWF0KikgY29uc3Q7Ci0gICAg
fTsKKyAgICB1c2luZyBVRGF0ZUZvcm1hdERlbGV0ZXIgPSBXVEY6OklDVURlbGV0ZXI8dWRhdF9j
bG9zZT47CiAKICAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3
Jik7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB3ZWVrZGF5U3RyaW5nKFdlZWtkYXkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApp
bmRleCBjMzhmZTk5ZTJmNGYwYTNkYjJmM2FiMTc5OTIyZWJhODM4YWEyOTM4Li5mZDU0N2UwM2Ix
ZDg2MWVhMzk2NDMyNDg1YTkwYjY1MWUyMGEzYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpA
QCAtNDIsNiArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZv
ID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbgogCiBuYW1lc3BhY2UgSW50
bE51bWJlckZvcm1hdEludGVybmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4
dGVuc2lvbktleXNbMV0gPSB7ICJudSIgfTsKK2NvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIH0KIAogc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVsZCB7CkBAIC00OSwxMiArNTEsNiBA
QCBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBzaXplX3Qgc2l6ZTsKIH07CiAK
LXZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCko
VU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1iZXJGb3Jt
YXQpCi0gICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQogSW50bE51bWJlckZv
cm1hdCogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiAgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0s
IHN0cnVjdHVyZSk7CkBAIC0xMTksNyArMTE1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVD
dXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQogICAgIC8vIDExLjEuMSBUaGUg
YWJzdHJhY3Qgb3BlcmF0aW9uIEN1cnJlbmN5RGlnaXRzIChjdXJyZW5jeSkKICAgICAvLyAiSWYg
dGhlIElTTyA0MjE3IGN1cnJlbmN5IGFuZCBmdW5kcyBjb2RlIGxpc3QgY29udGFpbnMgY3VycmVu
Y3kgYXMgYW4gYWxwaGFiZXRpYyBjb2RlLAogICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBtaW5vciB1
bml0IHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbmN5IGZyb20gdGhlIGxpc3Q7IGVs
c2UgcmV0dXJuIDIuCi0gICAgc3RkOjpwYWlyPGNvbnN0IGNoYXIqLCB1bnNpZ25lZD4gY3VycmVu
Y3lNaW5vclVuaXRzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBhaXI8Y29uc3Qg
Y2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKICAgICAgICAgeyAiQkhE
IiwgMyB9LAogICAgICAgICB7ICJCSUYiLCAwIH0sCiAgICAgICAgIHsgIkJZUiIsIDAgfSwKQEAg
LTE1Myw2ICsxNDksMTMzIEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lEaWdpdHMo
Y29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKICAgICByZXR1cm4gMjsKIH0KIAorLy8gQ3JlYXRlIE1l
YXN1cmVVbml0IGxpa2UgSUNVNEouCitjbGFzcyBNZWFzdXJlVW5pdCB7CitwdWJsaWM6CisgICAg
Y29uc3RleHByIE1lYXN1cmVVbml0KEFTQ0lJTGl0ZXJhbCB0eXBlLCBBU0NJSUxpdGVyYWwgc3Vi
VHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX3N1YlR5cGUoc3ViVHlw
ZSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgc3ViVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ViVHlwZTsgfQorCitwcml2YXRlOgorICAgIEFTQ0lJTGl0ZXJhbCBt
X3R5cGU7CisgICAgQVNDSUlMaXRlcmFsIG1fc3ViVHlwZTsKK307CisKK3N0YXRpYyBPcHRpb25h
bDxNZWFzdXJlVW5pdD4gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcg
dW5pdElkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWFzdXJlVW5pdCBzaW1w
bGVVbml0c1tdID0geworICAgICAgICB7ICJhcmVhIl9zLCAiYWNyZSJfcyB9LAorICAgICAgICB7
ICJkaWdpdGFsIl9zLCAiYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJieXRlIl9z
IH0sCisgICAgICAgIHsgInRlbXBlcmF0dXJlIl9zLCAiY2Vsc2l1cyJfcyB9LAorICAgICAgICB7
ICJsZW5ndGgiX3MsICJjZW50aW1ldGVyIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAi
ZGF5Il9zIH0sCisgICAgICAgIHsgImFuZ2xlIl9zLCAiZGVncmVlIl9zIH0sCisgICAgICAgIHsg
InRlbXBlcmF0dXJlIl9zLCAiZmFocmVuaGVpdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3Ms
ICJmbHVpZC1vdW5jZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJmb290Il9zIH0sCisg
ICAgICAgIHsgInZvbHVtZSJfcywgImdhbGxvbiJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9z
LCAiZ2lnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiZ2lnYWJ5dGUiX3MgfSwK
KyAgICAgICAgeyAibWFzcyJfcywgImdyYW0iX3MgfSwKKyAgICAgICAgeyAiYXJlYSJfcywgImhl
Y3RhcmUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJob3VyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgImluY2giX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImtpbG9i
aXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImtpbG9ieXRlIl9zIH0sCisgICAgICAg
IHsgIm1hc3MiX3MsICJraWxvZ3JhbSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJraWxv
bWV0ZXIiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAibGl0ZXIiX3MgfSwKKyAgICAgICAg
eyAiZGlnaXRhbCJfcywgIm1lZ2FiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgIm1l
Z2FieXRlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1ldGVyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgIm1pbGUiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWlsZS1z
Y2FuZGluYXZpYW4iX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAibWlsbGlsaXRlciJfcyB9
LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxsaW1ldGVyIl9zIH0sCisgICAgICAgIHsgImR1
cmF0aW9uIl9zLCAibWlsbGlzZWNvbmQiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJt
aW51dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJtb250aCJfcyB9LAorICAgICAg
ICB7ICJtYXNzIl9zLCAib3VuY2UiX3MgfSwKKyAgICAgICAgeyAiY29uY2VudHIiX3MsICJwZXJj
ZW50Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJwZXRhYnl0ZSJfcyB9LAorICAgICAg
ICB7ICJtYXNzIl9zLCAicG91bmQiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJzZWNv
bmQiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInN0b25lIl9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJ0ZXJhYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJ0ZXJhYnl0
ZSJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIndlZWsiX3MgfSwKKyAgICAgICAgeyAi
bGVuZ3RoIl9zLCAieWFyZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInllYXIiX3Mg
fSwKKyAgICB9OworCisgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpi
ZWdpbihzaW1wbGVVbml0cyksIHN0ZDo6ZW5kKHNpbXBsZVVuaXRzKSwgdW5pdElkZW50aWZpZXIs
CisgICAgICAgIFtdIChjb25zdCBNZWFzdXJlVW5pdCYgdW5pdCwgY29uc3QgU3RyaW5nVmlldyYg
dW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmICh1bml0SWRlbnRpZmllci5pczhCaXQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlKHVuaXQuc3Vi
VHlwZSgpLmNoYXJhY3RlcnMoKSwgdW5pdC5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVudGlm
aWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlKHVuaXQuc3ViVHlwZSgpLmNoYXJhY3Rl
cnMoKSwgdW5pdC5zdWJUeXBlKCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnMx
NigpLCB1bml0SWRlbnRpZmllci5sZW5ndGgoKSkgPCAwOworICAgICAgICB9KTsKKyAgICBpZiAo
aXRlcmF0b3IgIT0gc3RkOjplbmQoc2ltcGxlVW5pdHMpKSB7CisgICAgICAgIGlmICghV1RGOjpj
b2RlUG9pbnRDb21wYXJlKGl0ZXJhdG9yLT5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCBpdGVyYXRv
ci0+c3ViVHlwZSgpLmxlbmd0aCgpLCB1bml0SWRlbnRpZmllci5jaGFyYWN0ZXJzOCgpLCB1bml0
SWRlbnRpZmllci5sZW5ndGgoKSkpCisgICAgICAgICAgICByZXR1cm4gKml0ZXJhdG9yOworICAg
IH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitjbGFzcyBXZWxsRm9ybWVkVW5pdCB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJh
dG9yKQorICAgICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICB7CisgICAgfQorCisg
ICAgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVtZXJhdG9yLCBNZWFzdXJlVW5pdCBkZW5v
bWluYXRvcikKKyAgICAgICAgOiBtX251bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwgbV9k
ZW5vbWluYXRvcihkZW5vbWluYXRvcikKKyAgICB7CisgICAgfQorCisgICAgTWVhc3VyZVVuaXQg
bnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0b3I7IH0KKyAgICBPcHRpb25hbDxN
ZWFzdXJlVW5pdD4gZGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlbm9taW5hdG9yOyB9
Citwcml2YXRlOgorICAgIE1lYXN1cmVVbml0IG1fbnVtZXJhdG9yOworICAgIE9wdGlvbmFsPE1l
YXN1cmVVbml0PiBtX2Rlbm9taW5hdG9yOworfTsKKworc3RhdGljIE9wdGlvbmFsPFdlbGxGb3Jt
ZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmll
cikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZHVu
aXRpZGVudGlmaWVyCisgICAgaWYgKGF1dG8gdW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRl
bnRpZmllcih1bml0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBXZWxsRm9ybWVkVW5pdCh1
bml0LnZhbHVlKCkpOworCisgICAgLy8gSWYgdGhlIHN1YnN0cmluZyAiLXBlci0iIGRvZXMgbm90
IG9jY3VyIGV4YWN0bHkgb25jZSBpbiB1bml0SWRlbnRpZmllciwgdGhlbiByZXR1cm4gZmFsc2Uu
CisgICAgYXV0byBwZXIgPSBTdHJpbmdWaWV3KCItcGVyLSJfcyk7CisgICAgYXV0byBwb3MgPSB1
bml0SWRlbnRpZmllci5maW5kKHBlcik7CisgICAgaWYgKHBvcyA9PSBXVEY6Om5vdEZvdW5kKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcG9zMiA9IHVuaXRJZGVudGlm
aWVyLmZpbmQocGVyLCBwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGlmIChwb3MyICE9IFdURjo6
bm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUg
cmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMg
ZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50
aWZpZXIuc3Vic3RyaW5nKDAsIHBvcyk7CisgICAgYXV0byBudW1lcmF0b3JVbml0ID0gc2FuY3Rp
b25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcik7CisgICAgaWYgKCFudW1lcmF0b3JV
bml0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gSWYgdGhlIHJlc3Vs
dCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcikgaXMgZmFs
c2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gZGVub21pbmF0b3IgPSB1bml0SWRlbnRp
Zmllci5zdWJzdHJpbmcocG9zICsgcGVyLmxlbmd0aCgpKTsKKyAgICBhdXRvIGRlbm9taW5hdG9y
VW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihkZW5vbWluYXRvcik7CisgICAg
aWYgKCFkZW5vbWluYXRvclVuaXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1ZSgpLCBkZW5vbWluYXRv
clVuaXQudmFsdWUoKSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8j
c2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxv
Y2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewpAQCAtMTkxLDIwICszMTQsMjUgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxl
Il9zKTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9u
dW1iZXJpbmdTeXN0ZW0gPSByZXN1bHQuZ2V0KCJudSJfcyk7CiAKLSAgICBTdHJpbmcgc3R5bGVT
dHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVy
dHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5jeSIgfSwgInN0
eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgb3IgXCJjdXJyZW5j
eVwiIiwgImRlY2ltYWwiKTsKKyAgICAvLyBTZXROdW1iZXJGb3JtYXRVbml0T3B0aW9ucyhpbnRs
T2JqZWN0LCBvcHRpb25zKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2V0
bnVtYmVyZm9ybWF0dW5pdG9wdGlvbnMKKworICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHls
ZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiwgInVuaXQiIH0sICJzdHlsZSBt
dXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIFwiY3VycmVuY3lcIiwgb3Ig
XCJ1bml0XCIiLCAiZGVjaW1hbCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Ci0gICAgaWYgKHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIikKKyAgICBpZiAoc3R5bGVT
dHJpbmcgPT0gImRlY2ltYWwiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6RGVjaW1hbDsK
LSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAicGVyY2VudCIpCisgICAgZWxzZSBpZiAoc3R5
bGVTdHJpbmcgPT0gInBlcmNlbnQiX3MpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6UGVyY2Vu
dDsKLSAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAiY3VycmVuY3kiKQorICAgIGVsc2UgaWYg
KHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpD
dXJyZW5jeTsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAidW5pdCJfcykKKyAgICAgICAg
bV9zdHlsZSA9IFN0eWxlOjpVbml0OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKQEAgLTIxMiw3ICszNDAsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5p
c051bGwoKSkgewogICAgICAgICBpZiAoY3VycmVuY3kubGVuZ3RoKCkgIT0gMyB8fCAhY3VycmVu
Y3kuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpIHsKLSAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJf
cykpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJj
dXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTIyOSw2MCArMzU3LDI2OCBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjdXJyZW5jeURpZ2l0cyA9IGNvbXB1dGVDdXJy
ZW5jeURpZ2l0cyhjdXJyZW5jeSk7CiAgICAgfQogCi0gICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxh
eVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9s
IiwgIm5hbWUiIH0sICJjdXJyZW5jeURpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwi
c3ltYm9sXCIsIG9yIFwibmFtZVwiIiwgInN5bWJvbCIpOworICAgIFN0cmluZyBjdXJyZW5jeURp
c3BsYXlTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIpLCB7ICJjb2RlIiwgInN5
bWJvbCIsICJuYXJyb3dTeW1ib2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwgXCJuYXJyb3dTeW1ib2xcIiwgb3IgXCJuYW1l
XCIiLCAic3ltYm9sIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKLSAgICAgICAgaWYgKGN1cnJl
bmN5RGlzcGxheVN0cmluZyA9PSAiY29kZSIpCisgICAgICAgIGlmIChjdXJyZW5jeURpc3BsYXlT
dHJpbmcgPT0gImNvZGUiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJl
bmN5RGlzcGxheTo6Q29kZTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5n
ID09ICJzeW1ib2wiKQorICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0g
InN5bWJvbCJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAi
bmFtZSIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAibmFycm93
U3ltYm9sIl9zKQorICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3Bs
YXk6Ok5hcnJvd1N5bWJvbDsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5n
ID09ICJuYW1lIl9zKQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURp
c3BsYXk6Ok5hbWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgU3RyaW5nIGN1cnJl
bmN5U2lnblN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIHsgInN0YW5kYXJkIiwg
ImFjY291bnRpbmciIH0sICJjdXJyZW5jeVNpZ24gbXVzdCBiZSBlaXRoZXIgXCJzdGFuZGFyZFwi
IG9yIFwiYWNjb3VudGluZ1wiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUlu
dGVnZXJEaWdpdHM7CisgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAg
ICAgIGlmIChjdXJyZW5jeVNpZ25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICAgICAg
bV9jdXJyZW5jeVNpZ24gPSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOworICAgICAgICBlbHNlIGlm
IChjdXJyZW5jeVNpZ25TdHJpbmcgPT0gImFjY291bnRpbmciX3MpCisgICAgICAgICAgICBtX2N1
cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkg
PyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgU3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQi
KSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdDsK
KyAgICBpZiAoIXVuaXQuaXNOdWxsKCkpIHsKKyAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxs
Rm9ybWVkVW5pdElkZW50aWZpZXIodW5pdCk7CisgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQp
IHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5p
dCBpcyBub3QgYSB3ZWxsLWZvcm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fdW5pdCA9IHVuaXQ7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IG11c3QgYmUgYSBzdHJpbmciX3Mp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogCi0gICAgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMi
KSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgIFN0cmluZyB1bml0
RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdERpc3BsYXkiKSwgeyAic2hvcnQiLCAibmFy
cm93IiwgImxvbmciIH0sICJ1bml0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0XCIsIFwi
bmFycm93XCIsIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1G
cmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAg
ICBpZiAodW5pdERpc3BsYXlTdHJpbmcgPT0gInNob3J0Il9zKQorICAgICAgICAgICAgbV91bml0
RGlzcGxheSA9IFVuaXREaXNwbGF5OjpTaG9ydDsKKyAgICAgICAgZWxzZSBpZiAodW5pdERpc3Bs
YXlTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAgICAgIG1fdW5pdERpc3BsYXkgPSBVbml0
RGlzcGxheTo6TmFycm93OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAi
bG9uZyJfcykKKyAgICAgICAgICAgIG1fdW5pdERpc3BsYXkgPSBVbml0RGlzcGxheTo6TG9uZzsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQog
Ci0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKLSAgICBpZiAobV9z
dHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIGN1cnJlbmN5RGlnaXRzKTsK
LSAgICBlbHNlIGlmIChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KQotICAgICAgICBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotICAgIGVsc2UK
LSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1G
cmFjdGlvbkRpZ2l0cywgM3UpOworICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQgPSAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAw
OworICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAobV9zdHlsZSA9
PSBTdHlsZTo6Q3VycmVuY3kpID8gY3VycmVuY3lEaWdpdHMgOiAobV9zdHlsZSA9PSBTdHlsZTo6
UGVyY2VudCkgPyAwIDogMzsKIAotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9
IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0
cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOworICAgIFN0cmluZyBub3RhdGlv
blN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwgeyAic3RhbmRhcmQiLCAic2NpZW50aWZp
YyIsICJlbmdpbmVlcmluZyIsICJjb21wYWN0IiB9LCAibm90YXRpb24gbXVzdCBiZSBlaXRoZXIg
XCJzdGFuZGFyZFwiLCBcInNjaWVudGlmaWNcIiwgXCJlbmdpbmVlcmluZ1wiLCBvciBcImNvbXBh
Y3RcIiIsICJzdGFuZGFyZCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7
CisgICAgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJzdGFuZGFyZCJfcykKKyAgICAgICAgbV9ub3Rh
dGlvbiA9IEludGxOb3RhdGlvbjo6U3RhbmRhcmQ7CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJp
bmcgPT0gInNjaWVudGlmaWMiX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM7CisgICAgZWxzZSBpZiAobm90YXRpb25TdHJpbmcgPT0gImVuZ2luZWVyaW5n
Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzsKKyAg
ICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiY29tcGFjdCJfcykKKyAgICAgICAgbV9ub3Rh
dGlvbiA9IEludGxOb3RhdGlvbjo6Q29tcGFjdDsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogCi0gICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRP
cHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgbWluaW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbV9ub3RhdGlvbik7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIEpTVmFsdWUgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAg
IFN0cmluZyBjb21wYWN0RGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyAi
c2hvcnQiLCAibG9uZyIgfSwgImNvbXBhY3REaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRc
IiBvciBcImxvbmdcIiIsICJzaG9ydCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7Ci0KLSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5k
ZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIp
LCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwg
bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgaWYgKG1fbm90YXRpb24g
PT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGlmIChjb21wYWN0RGlzcGxheSA9
PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX2NvbXBhY3REaXNwbGF5ID0gQ29tcGFjdERpc3Bs
YXk6OlNob3J0OworICAgICAgICBlbHNlIGlmIChjb21wYWN0RGlzcGxheSA9PSAibG9uZyJfcykK
KyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6TG9uZzsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAg
ICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdXNlR3JvdXBpbmcg
PSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKKyAgICBTdHJpbmcgc2lnbkRpc3Bs
YXkgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsgImF1dG8iLCAibmV2ZXIiLCAiYWx3YXlz
IiwgImV4Y2VwdFplcm8iIH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwg
XCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9cIiIsICJhdXRvIik7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc2lnbkRpc3BsYXkg
PT0gImF1dG8iX3MpCisgICAgICAgIG1fc2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6QXV0bzsK
KyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAibmV2ZXIiX3MpCisgICAgICAgIG1fc2lnbkRp
c3BsYXkgPSBTaWduRGlzcGxheTo6TmV2ZXI7CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0g
ImFsd2F5cyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBbHdheXM7
CisgICAgZWxzZSBpZiAoc2lnbkRpc3BsYXkgPT0gImV4Y2VwdFplcm8iX3MpCisgICAgICAgIG1f
c2lnbkRpc3BsYXkgPSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzsKKyAgICBlbHNlCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gT3B0aW9ucyBhcmUgb2J0YWluZWQuIENv
bmZpZ3VyZSBmb3JtYXR0ZXIgaGVyZS4KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRF
UikKKyAgICAvLyBDb25zdHJ1Y3RpbmcgSUNVIE51bWJlciBTa2VsZXRvbnMgdG8gY29uZmlndXJl
IFVOdW1iZXJGb3JtYXR0ZXIuCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQKKworICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOworICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKworICAg
IHN3aXRjaCAobV9zdHlsZSkgeworICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CisgICAgICAgIC8v
IE5vIHNrZWxldG9uIGlzIG5lZWRlZC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6
UGVyY2VudDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXJjZW50
IHNjYWxlLzEwMCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeTog
eworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGN1cnJlbmN5LyIpOwor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKGN1cnJlbmN5KTsKKworICAgICAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN1bml0LXdpZHRoCisgICAgICAg
IHN3aXRjaCAobV9jdXJyZW5jeURpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeURpc3Bs
YXk6OkNvZGU6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVu
aXQtd2lkdGgtaXNvLWNvZGUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1
cnJlbmN5RGlzcGxheTo6U3ltYm9sOgorICAgICAgICAgICAgLy8gRGVmYXVsdCBvcHRpb24uIERv
IG5vdCBzcGVjaWZ5IHVuaXQtd2lkdGguCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFN0eWxlOjpVbml0OiB7CisgICAgICAgIC8vIFRoZSBtZWFzdXJlLXVuaXQgc3RlbSB0YWtl
cyBvbmUgcmVxdWlyZWQgb3B0aW9uOiB0aGUgdW5pdCBpZGVudGlmaWVyIG9mIHRoZSB1bml0IHRv
IGJlIGZvcm1hdHRlZC4KKyAgICAgICAgLy8gVGhlIGZ1bGwgdW5pdCBpZGVudGlmaWVyIGlzIHJl
cXVpcmVkOiBib3RoIHRoZSB0eXBlIGFuZCB0aGUgc3VidHlwZSAoZm9yIGV4YW1wbGUsIGxlbmd0
aC1tZXRlcikuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3VuaXQKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtZWFzdXJl
LXVuaXQvIik7CisgICAgICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9IHdlbGxGb3JtZWRVbml0LT5u
dW1lcmF0b3IoKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0
LnR5cGUoKSwgJy0nLCBudW1lcmF0b3JVbml0LnN1YlR5cGUoKSk7CisgICAgICAgIGlmIChhdXRv
IGRlbm9taW5hdG9yVW5pdFZhbHVlID0gd2VsbEZvcm1lZFVuaXQtPmRlbm9taW5hdG9yKCkpIHsK
KyAgICAgICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUu
dmFsdWUoKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVy
LW1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVu
b21pbmF0b3JVbml0LnR5cGUoKSwgJy0nLCBkZW5vbWluYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoIChtX3VuaXREaXNwbGF5KSB7CisgICAgICAg
IGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93OgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6CisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1lIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2Nz
L3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13aWR0
aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgaW50ZWdlci13aWR0aC8iKTsK
KyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjcpID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGlu
c3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtSW50ZWdl
ckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpG
cmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3Nr
ZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZy
YWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcw
Jyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRp
Z2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNp
b24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29t
cGFjdFJvdW5kaW5nOgorICAgICAgICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1
L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNub3RhdGlvbgorICAgIHN3aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2Np
ZW50aWZpYyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5l
ZXJpbmc6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJp
bmciKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6Cisg
ICAgICAgIHN3aXRjaCAobV9jb21wYWN0RGlzcGxheSkgeworICAgICAgICBjYXNlIENvbXBhY3RE
aXNwbGF5OjpTaG9ydDoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgY29tcGFjdC1zaG9ydCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29t
cGFjdERpc3BsYXk6Okxvbmc6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIGNvbXBhY3QtbG9uZyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUt
b3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9z
a2VsZXRvbnMubWQjc2lnbi1kaXNwbGF5CisgICAgLy8gQ3VycmVuY3lTaWduJ3MgYWNjb3VudGlu
ZyBpcyBhIHBhcnQgb2YgU2lnbkRpc3BsYXkgaW4gSUNVLgorICAgIGJvb2wgdXNlQWNjb3VudGlu
ZyA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSAmJiBtX2N1cnJlbmN5U2lnbiA9PSBDdXJy
ZW5jeVNpZ246OkFjY291bnRpbmcpOworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmci
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBzaWduLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6
TmV2ZXI6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1uZXZl
ciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAg
ICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAg
aWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1leGNlcHQtemVybyIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tZXhjZXB0LXplcm8i
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9mZiIpOworCisgICAg
U3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgZGF0YUxv
Z0xuSWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBtX2xvY2FsZSk7CisgICAg
ZGF0YUxvZ0xuSWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBza2VsZXRvbik7
CisgICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9v
cGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVy
cygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCks
ICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJl
ckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZWxzZQogICAgIFVOdW1iZXJG
b3JtYXRTdHlsZSBzdHlsZSA9IFVOVU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsK
ICAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgpAQCAtMjk5LDY1ICs2MzUsMTEzIEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAg
ICAgICAgICAgICBzdHlsZSA9IFVOVU1fQ1VSUkVOQ1k7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBO
dW1iZXJGb3JtYXQiX3MpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEN1cnJl
bmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVS
QUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5j
eVNpZ24pIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fbm90YXRpb24pIHsKKyAgICBj
YXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmlu
ZzoKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3Bs
YXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6Cisg
ICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVy
Rm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAw
LCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
TnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3N0
eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICB1bnVtX3NldFRleHRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fQ1VSUkVOQ1lfQ09ERSwgU3RyaW5nVmlldyhtX2N1
cnJlbmN5KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgbV9jdXJyZW5jeS5sZW5ndGgoKSwgJnN0
YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51
bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIW1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1
dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmlt
dW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgfSBl
bHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZp
Y2FudERpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwogICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElH
SVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3Mp
OworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNlR3JvdXBpbmcpOwogICAgIHVu
dW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1JPVU5ESU5HX01PREUs
IFVOVU1fUk9VTkRfSEFMRlVQKTsKKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAg
IEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgVmVj
dG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
KyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRy
PFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVz
dWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9mb3Jt
YXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIu
Z2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyNl
bHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0YXR1cyA9IGNhbGxC
dWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZSwgbV9udW1iZXJGb3JtYXQu
Z2V0KCksIHZhbHVlLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25zdAogewotICAg
IEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0zNjgs
MTAgKzc1MiwyNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgYXV0byogcmF3U3RyaW5n
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpOwog
CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVt
Zl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1
bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCByYXdTdHJpbmcsIHN0
cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9y
bWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZv
cm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51
bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcu
bGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKQEAgLTM4NCw2ICs3ODMsOCBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJl
dHVybiAicGVyY2VudCJfczsKICAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgcmV0
dXJuICJjdXJyZW5jeSJfczsKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAgICAgICByZXR1cm4g
InVuaXQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKQEAgLTM5Niw2ICs3OTcsOCBAQCBBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJy
ZW5jeURpcwogICAgICAgICByZXR1cm4gImNvZGUiX3M7CiAgICAgY2FzZSBDdXJyZW5jeURpc3Bs
YXk6OlN5bWJvbDoKICAgICAgICAgcmV0dXJuICJzeW1ib2wiX3M7CisgICAgY2FzZSBDdXJyZW5j
eURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgcmV0dXJuICJuYXJyb3dTeW1ib2wiX3M7
CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU6CiAgICAgICAgIHJldHVybiAibmFtZSJf
czsKICAgICB9CkBAIC00MDMsNiArODA2LDc2IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6bm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAg
IHN3aXRjaCAobm90YXRpb24pIHsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6Cisg
ICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVu
dGlmaWM6CisgICAgICAgIHJldHVybiAic2NpZW50aWZpYyJfczsKKyAgICBjYXNlIEludGxOb3Rh
dGlvbjo6RW5naW5lZXJpbmc6CisgICAgICAgIHJldHVybiAiZW5naW5lZXJpbmciX3M7CisgICAg
Y2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lT
aWduU3RyaW5nKEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCit7CisgICAgc3dpdGNoIChjdXJy
ZW5jeVNpZ24pIHsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgIHJl
dHVybiAic3RhbmRhcmQiX3M7CisgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6Cisg
ICAgICAgIHJldHVybiAiYWNjb3VudGluZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5pdERp
c3BsYXkpCit7CisgICAgc3dpdGNoICh1bml0RGlzcGxheSkgeworICAgIGNhc2UgVW5pdERpc3Bs
YXk6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgVW5pdERpc3Bs
YXk6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBVbml0RGlz
cGxheTo6TG9uZzoKKyAgICAgICAgcmV0dXJuICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0
RGlzcGxheSBjb21wYWN0RGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKGNvbXBhY3REaXNwbGF5KSB7
CisgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgIHJldHVybiAic2hvcnQi
X3M7CisgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgcmV0dXJuICJsb25n
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHNp
Z25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJu
ICJhdXRvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICByZXR1cm4g
Im5ldmVyIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgcmV0dXJu
ICJhbHdheXMiX3M7CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAg
cmV0dXJuICJleGNlcHRaZXJvIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9u
cwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNDExLDE5ICs4ODQsMzggQEAgSlNPYmpl
Y3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0s
IG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0
eWxlKSkpOwotICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgeworICAgIHN3aXRj
aCAobV9zdHlsZSkgeworICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CisgICAgY2FzZSBTdHlsZTo6
UGVyY2VudDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJyZW5jeSkpOwogICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5j
eURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeURpc3BsYXlTdHJpbmco
bV9jdXJyZW5jeURpc3BsYXkpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5U2lnbiIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGN1cnJlbmN5U2lnblN0cmluZyhtX2N1cnJlbmN5U2lnbikpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIG1fdW5pdCkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHVu
aXREaXNwbGF5U3RyaW5nKG1fdW5pdERpc3BsYXkpKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7
Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRz
KSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzKSk7Ci0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIEFT
U0VSVChtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5n
VHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWdu
aWZpY2FudERpZ2l0czoKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIp
LCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRp
b24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkp
OworICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFj
dERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyht
X2NvbXBhY3REaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
c2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsK
IH0KIApAQCAtNDMyLDcgKzkyNCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRG
b3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0
LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlw
ZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIElu
dGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNo
IChmaWVsZCkgewogICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgpAQCAtNDQ1LDIwICs5Mzcs
MzEgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiAgICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7CiAg
ICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImRl
Y2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKKyAgICAgICAg
cmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lH
Tl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudE1pbnVzU2lnbiJfczsKKyAgICBjYXNl
IFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9z
OwogICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVy
biAiZ3JvdXAiX3M7CiAgICAgY2FzZSBVTlVNX0NVUlJFTkNZX0ZJRUxEOgogICAgICAgICByZXR1
cm4gImN1cnJlbmN5Il9zOwogICAgIGNhc2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICBy
ZXR1cm4gInBlcmNlbnRTaWduIl9zOworICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQi
LCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQt
ZW4tVVMuanMKKyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHls
ZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKICAgICBjYXNlIFVOVU1fU0lH
Tl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/ICJtaW51c1NpZ24iX3MgOiAicGx1
c1NpZ24iX3M7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gIm1pbnVzU2ln
biJfcyA6ICJwbHVzU2lnbiJfczsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisg
ICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9z
OworICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBhY3Qi
X3M7CisjZW5kaWYKICAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0aGVy
ZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgogICAg
IC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24gcGFy
dCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgogICAgIGNhc2UgVU5VTV9QRVJN
SUxMX0ZJRUxEOgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgY2Fz
ZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxE
OgogICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMg
ZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFuICJ1bmtub3duIiBwYXJ0LgogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiAidW5rbm93biJfczsKQEAgLTQ2Niw3ICs5NjksNyBAQCBz
dGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmll
bGQsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gInVua25vd24iX3M7CiB9CiAKLXZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0
cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ3OCw3ICs5ODEs
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICBWZWN0b3I8SW50bE51bWJlckZvcm1h
dEZpZWxkLCAzMj4gZmllbGRzKHN0cmluZ0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKICAgICBpbnQz
Ml90IGJlZ2luSW5kZXggPSAwOwogICAgIGludDMyX3QgZW5kSW5kZXggPSAwOwotICAgIGF1dG8g
ZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVu
ZEluZGV4KTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRv
IGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBpdGVy
YXRvciJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgd2hpbGUgKGZpZWxkVHlwZSA+
PSAwKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OwogICAg
ICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7CkBAIC00
ODYsNyArOTk0LDEyIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVy
bmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgICAgICBpZiAo
ZmllbGRzW2ldLnNpemUgPj0gc2l6ZSkKICAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRs
TnVtYmVyRm9ybWF0RmllbGQgeyBmaWVsZFR5cGUsIHNpemUgfTsKICAgICAgICAgfQotICAgICAg
ICBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAm
ZW5kSW5kZXgpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGZpZWxk
VHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0
ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3Mp
OwpAQCAtNTAwLDcgKzEwMTMsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFy
dHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAogICAgICAgICBh
dXRvIGZpZWxkVHlwZSA9IGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGU7CiAgICAgICAgIHdoaWxl
IChjdXJyZW50SW5kZXggPCBzdHJpbmdMZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0udHlw
ZSA9PSBmaWVsZFR5cGUpCiAgICAgICAgICAgICArK2N1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0
byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmlu
ZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxk
VHlwZSksIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0
ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJp
bmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKICAgICAg
ICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4
LCBjdXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICBwYXJ0LT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKQEAgLTUxNSwyMCArMTAy
OCw0MCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVydG9wYXJ0cwogSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWx1ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZp
ZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0
ZXJhdG9yIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKICAg
ICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFU
VEVSKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3Jt
YXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1m
X3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJlc3VsdCk7CisgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmllbGRQb3NpdGlvbnMo
Zm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBJbnRs
RmllbGRJdGVyYXRvciBpdGVyYXRvcihmaWVsZEl0ci5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0
aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIHJlc3VsdCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
ICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdldCgpKTsKKyNlbmRpZgog
CiAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsKIApAQCAtNTM2LDcgKzEw
NjksNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmICghcGFydHMpCiAgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAg
ICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVzdWx0U3RyaW5n
LCBmaWVsZEl0ci5nZXQoKSwgcGFydHMpOworICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9i
YWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGl0ZXJhdG9yLCBwYXJ0cyk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHJldHVybiBwYXJ0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
aAppbmRleCA0MzA0YjIyYThjNmE1MTFmNzRlMmJkY2IwNTM4OGQ1YjY1YjczNDc2Li43NjRhNDc5
NWRlNjUyMTYxNjBjMDMyYTIxZWRjYjdmZGIzZjgzNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yOCwxMSArMjgsMjggQEAK
IAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CisjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworI2lmICFkZWZpbmVkKEhBVkVf
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKy8vIFVOVU1fQ09NUEFDVF9GSUVMRCBhbmQgVU5VTV9N
RUFTVVJFX1VOSVRfRklFTEQgYXJlIGF2YWlsYWJsZSBhZnRlciBJQ1UgNjQuCisjaWYgVV9JQ1Vf
VkVSU0lPTl9NQUpPUl9OVU0gPj0gNjQKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfRk9STUFU
VEVSIDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIp
CisjaW5jbHVkZSA8dW5pY29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0
aW9uOwogCitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25E
aWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3Mg
SW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmlu
ZywgQ29tcGFjdCB9OwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVy
Rm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCos
IHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC02NCw3ICs4MSwxNCBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTQm91
bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0Lmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOwog
Ci0gICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRvcios
IEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgU3R5
bGUgOiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKKworICAg
IHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxl
LCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpT
QXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50bFR5cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQsIEludGxOb3RhdGlvbik7CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGF0aW9uU3Ry
aW5nKEludGxOb3RhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdChWTSYs
IFN0cnVjdHVyZSopOwpAQCAtNzMsMjIgKzk3LDMzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMgVmVjdG9yPFN0
cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpOwogCi0gICAgZW51bSBjbGFz
cyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSB9OwotICAgIGVu
dW0gY2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJvbCwgTmFtZSB9
OwotCi0gICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVy
YXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKLSAgICB9OworICAgIGVudW0gY2xhc3MgQ3Vy
cmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJvbCwgTmFycm93U3ltYm9sLCBOYW1l
IH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFj
Y291bnRpbmcgfTsKKyAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0
LCBOYXJyb3csIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhf
dCB7IFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3Qg
eyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CiAKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJl
bmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgY3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbik7CisgICAgc3RhdGljIEFTQ0lJTGl0
ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0
ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CiAKICAgICBXcml0ZUJh
cnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7Cisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0
ZXJEZWxldGVyID0gV1RGOjpJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9y
bWF0dGVkTnVtYmVyRGVsZXRlciA9IFdURjo6SUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD47
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJE
ZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNlbHNlCisgICAgdXNpbmcgVU51bWJlckZvcm1h
dERlbGV0ZXIgPSBXVEY6OklDVURlbGV0ZXI8dW51bV9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXQsIFdURjo6SUNVRGVsZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJG
b3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1i
ZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3VycmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsK
ICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVk
IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyArMTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxl
OjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAg
IEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKKyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNw
bGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0
aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3Bs
YXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAg
SW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0
aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY4NWNkYTI1MjdjM2Y2OTljOWY1YTc2ZDE3MWY1Y2FiZGZhYjJmMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2
b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBKU09iamVjdCogb3B0aW9ucywgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0g
b3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlv
bnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25z
LT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNp
Z25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11
bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3Vu
ZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAy
MSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAg
IGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwg
IW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVs
dE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIw
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlv
bkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMg
PSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7Cisg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpD
b21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7Cisg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0
ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVy
YXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmllbGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yKiBpdGVyYXRvcikKKyAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsK
KyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYg
ZW5kSW5kZXgsIFVFcnJvckNvZGUmIHN0YXR1cykKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJB
TShzdGF0dXMpOworICAgICAgICByZXR1cm4gdWZpZWxkcG9zaXRlcl9uZXh0KG1faXRlcmF0b3Is
ICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBVRmllbGRQ
b3NpdGlvbkl0ZXJhdG9yKiBtX2l0ZXJhdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApp
bmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNjNTNiOGQ1YTZjMWY1NzZmLi5jNzc0YmMzZmEz
OWUwOTEwMmUzMWFhZTQxYzE4MjQ5ZDU2OGFlYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpA
QCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRs
UGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCi12b2lk
IEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVzRGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFs
UnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewotICAgIGlmIChwbHVyYWxSdWxlcykKLSAgICAg
ICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOwotfQotCi12b2lkIEludGxQbHVyYWxSdWxl
czo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVy
Rm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1iZXJGb3JtYXQpCi0gICAgICAgIHVudW1fY2xv
c2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0IFVFbnVtZXJhdGlvbkRlbGV0ZXIgewotICAg
IHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24qIGVudW1lcmF0aW9uKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAgICAgICAgICAgdWVudW1fY2xvc2UoZW51bWVy
YXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gV1RGOjpJQ1VE
ZWxldGVyPHVlbnVtX2Nsb3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1cmFsUnVsZXM6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTI1LDM0ICsxMDgs
OCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBUeXBl
OjpPcmRpbmFsIDogVHlwZTo6Q2FyZGluYWw7CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50
ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM7Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3Rk
OjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUZy
YWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11
bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
c2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywg
MCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFj
dGlvbkRpZ2l0czsKLQotICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0KLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
ID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5p
c1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxO
dW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMi
KSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgfQogCiAgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6
OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3Bl
bihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxw
dHIsICZzdGF0dXMpKTsKQEAgLTE2MSwxNCArMTE4LDIwIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVz
Ojppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMpIHsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwotICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElH
SVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICAgICAgdW51bV9z
ZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJ
R0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgfSBlbHNlIHsK
KyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRz
KTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
TUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05f
RElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19V
U0VELCB0cnVlKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpOworICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKQEAgLTE5MSwxMSArMTU0LDE4IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJl
c29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBUeXBl
OjpPcmRpbmFsID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRp
Z2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9u
RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYg
KG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0
cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7Ci0gICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERp
Z2l0cy52YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0
cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rp
b25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihB
cnJheVdpdGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IGIwMTVmZTgyYTBlNjkzYTBjYmQwODJiMjIwZjI1
NWQ4MmFlNzRiNzEuLjExZmFkODEyNGUxZmY3YTBjYTI5YjFhMGQyZDBhZDYxOGRlNTM2NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBA
IC0yNSw5ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUzLDYgKzU0LDkg
QEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+
CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0
c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3Rh
dGlvbik7CisKICAgICB2b2lkIGluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKICAgICBKU1ZhbHVlIHNlbGVjdChK
U0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpAQCAtNjYsMTIgKzcwLDggQEAgY2xh
c3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAg
ICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAgICBz
dHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUGx1
cmFsUnVsZXMqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRl
ciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAg
fTsKKyAgICB1c2luZyBVUGx1cmFsUnVsZXNEZWxldGVyID0gV1RGOjpJQ1VEZWxldGVyPHVwbHJ1
bGVzX2Nsb3NlPjsKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IFdURjo6SUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQ
bHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKQEAgLTgw
LDggKzgwLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAg
ICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQg
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAg
fTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkNhcmRpbmFsIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdjM2M4NTQ0YTJiNzQ5
ODAzMGY3YzQ2ZTcuLjkwNjJlMmNkODg0Yjg0MjU0ZGM5MGMzMjcxZTY1MjU2MWU5NWRmYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVkZSAiSW50bE51bWJl
ckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmpl
Y3RDb25zdHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNlIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciogcmVsZXZhbnRFeHRl
bnNpb25LZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVSZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKSBjb25zdAotewot
ICAgIGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1cmVsZGF0ZWZtdF9j
bG9zZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAg
dW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwg
c3RydWN0dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ygog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxP
YmplY3QsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywg
anNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAgICAgIElu
dGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICBJ
bnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRs
TnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwg
ZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9T
dHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBhZTZhNTAyNzBkMTZm
ODU1ZGEuLjk2N2ZkZDc4MjUxODE1ODcyZWU5MTE3MzkwMTI3ZmFiZDkxYTI4MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVjdCBVUmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJlbGF0
aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVy
Rm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0Kikg
Y29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0
ZXIgPSBXVEY6OklDVURlbGV0ZXI8dXJlbGRhdGVmbXRfY2xvc2U+OworICAgIHVzaW5nIFVOdW1i
ZXJGb3JtYXREZWxldGVyID0gV1RGOjpJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogCiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBlMTJmNDgxNmMzZTE0NDI1NWMxYTRmNTMy
YTI4Njc3ZGRiM2QyNTU2Li5lMjYyMWVkOTRlNTk4NDlhN2E2Yzg3ODAwYjU1YWRjNjAwNzIyMGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC01Niw2
ICs1Niw3IEBACiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0
Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKQEAgLTMwNzYsOSArMzA3Nyw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhKU0dsb2JhbE9iCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSUNVVmVyc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7Ci0g
ICAgVVZlcnNpb25JbmZvIHZlcnNpb25JbmZvOwotICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9uSW5m
byk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2ZXJzaW9uSW5mb1swXSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpJQ1U6Om1ham9yVmVy
c2lvbigpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQXNzZXJ0RW5hYmxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MTI2M2I1NzVjNGU0OTBiOTE2MTgy
NWEwY2YxNjU3ZTExYWJkYmE4Li44NDU2ZTMwYmJhZmVkZDY5NzFhZWEwNjNjMDQ5MDE0ZWVjYjA1
YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MCw2
ICsxODAsNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpT
T04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJ
RTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZG
MDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4
MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFs
dWVNYWxsb2MuY3BwICovOyB9OworCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVs
cGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBB
RDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5jcHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9Owog
CQlFQjYxRURDNzI0MDlDQ0MxMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCNjFFREM2MjQwOUND
QzAwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwICovOyB9OwpAQCAtNzMxLDYgKzcz
Miw3IEBACiAJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBFMjAw
N0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzQTMyQkMzMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNCRTA5QTYyNEE1ODU0NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNVSGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8q
IFN5c3RlbUZyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJl
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1
QjQgLyogTm9ubW92YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjczLDggKzEyNzUsOCBAQAogCQkJCTBGNzA3NUYzMUZC
RjUzN0EwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5oICovLAogCQkJCTU1MzA3MUM5MUM0MDQyNzIw
MDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLywKIAkJCQkwRkVENjdCNTFCMjJENEQ4MDA2NkNF
MTUgLyogVGlueVB0clNldC5oICovLAotCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBU
cmFuc2xhdGVkUHJvY2Vzcy5oICovLAogCQkJCTUyMUNDNkIzMjRBMjc3QzIwMDQzNzdENiAvKiBU
cmFuc2xhdGVkUHJvY2Vzcy5jcHAgKi8sCisJCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8q
IFRyaVN0YXRlLmggKi8sCiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0
cy5oICovLAogCQkJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3Mu
aCAqLywKQEAgLTE0NTIsNiArMTQ1NCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAg
Ki8sCisJCQkJRTNCRTA5QTYyNEE1ODU0NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovLAog
CQkJCTUyQjIyOEMxMjQ1OERDODIwMDc1M0Q5MSAvKiBJQ1VIZWxwZXJzLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGljdTsKQEAgLTE2NzYsNiArMTY3OSw3IEBACiAJCQkJMkNDRDg5MkExNUMwMzkw
MjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNCNUI0NEUyMjEzRDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFM0EzMkJDNDFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1h
bGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM0MDFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzQ3LDcgKzE3NTEsNiBAQAogCQkJCUE1
QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsQ29jb2EubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTk5M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1Zp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTIxQ0M2QjQyNEEyNzgwOTAwNDM3N0Q2IC8qIFRy
YW5zbGF0ZWRQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQ1MThBMUYxNjkw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMx
OEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0I3MTUxQTgyNUIwMDQxMjNGRiAvKiBzdHJ0b2QuY2MgaW4gU291cmNlcyAqLywKQEAg
LTE3NjQsNiArMTc2Nyw3IEBACiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOTAxREM5N0JBQjAwNEExRDNG
IC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcw
NzVGNTFGQkY1M0NEMDA0ODlBRjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTIxQ0M2QjQyNEEyNzgwOTAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQTZGMzk1MjBDQ0FDRTkwMEEwM0RDRCAvKiBVbmlxdWVBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQ3MWViMjgyMzU0OWU1
ZDVkYTA3Y2JhYmE5NGU5NDYxMTAxZTIyZC4uZDIyMGU2YTg4ODY3ZTFlZjE0MGQwYjBjNDdlMDk1
MjA2NmQwYmVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTQ5OSw2ICs0OTksNyBAQCBzZXQo
V1RGX1NPVVJDRVMKICAgICB1bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcAogCiAgICAgdW5pY29k
ZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCisgICAgdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKICkK
IAogc2V0KFdURl9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5oCmluZGV4IGE5MDhkZjNiZWE2MWZmYzIzZWJkZGIzNDRjNzU2ZmMyYzhlODgyNzcu
LmY3YTQ3OWEwYmEwNzFlZjA2ODlhMGUxMjMyZmJlYjQ0YTVkMGI2ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BU0NJSUxpdGVyYWwuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKQEAgLTQ3LDcgKzQ4LDkgQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZp
bmFsIHsKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7IG51bGxwdHIgfTsKICAgICB9CiAK
LSAgICBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJz
OyB9CisgICAgY29uc3RleHByIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NoYXJhY3RlcnM7IH0KKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihtX2NoYXJhY3RlcnMpOyB9CisgICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHN0cmxlbihtX2NoYXJhY3RlcnMpOyB9CiAK
IHByaXZhdGU6CiAgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbChjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmgKaW5kZXggOGJkYzhiMGVlMTliMzJjZDVmMDZmZmRjMmNhNzdhZTM1YTYxZjM4
ZC4uYzIyYThhZTM0NDYxYzNiM2NjODAyYmZjYjUzMDFhNjY3MmJjOWVmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Db252ZXJzaW9uTW9kZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0xDaGFyLmg+CkBAIC02OCw2ICs2OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmlu
YWwgewogICAgIFN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
IFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciosIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgU3RyaW5nVmlldyhBU0NJSUxpdGVyYWwpOwogCiAgICAgc3Rh
dGljIFN0cmluZ1ZpZXcgZW1wdHkoKTsKIApAQCAtMzU2LDYgKzM1OCwxMSBAQCBpbmxpbmUgU3Ry
aW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgaW5pdGlhbGl6ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyksIGxlbmd0aCk7CiB9CiAKK2lubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KEFTQ0lJ
TGl0ZXJhbCBzdHJpbmcpCit7CisgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwg
c3RyaW5nLmxlbmd0aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM2ZjNlMTBjZjQ2ZjU5OGIzOGYxYjA0OTI2NWZjY2U3ZmU4MmM3MzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+
CisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx1bmljb2RlL3V2ZXJudW0uaD4KKworbmFt
ZXNwYWNlIFdURiB7CituYW1lc3BhY2UgSUNVIHsKKworc3RhdGljIGNvbnN0IFVWZXJzaW9uSW5m
byYgdmVyc2lvbigpCit7CisgICAgc3RhdGljIFVWZXJzaW9uSW5mbyB2ZXJzaW9ucyB7IH07Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgdV9nZXRWZXJzaW9uKHZlcnNpb25zKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gdmVyc2lvbnM7Cit9CisKK3Vuc2lnbmVkIG1ham9yVmVyc2lvbigpCit7CisgICAg
c3RhdGljX2Fzc2VydCgwIDwgVV9NQVhfVkVSU0lPTl9MRU5HVEgpOworICAgIHJldHVybiB2ZXJz
aW9uKClbMF07Cit9CisKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpCit7CisgICAgc3RhdGljX2Fz
c2VydCgxIDwgVV9NQVhfVkVSU0lPTl9MRU5HVEgpOworICAgIHJldHVybiB2ZXJzaW9uKClbMV07
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV1RGOjpJQ1UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1
L0lDVUhlbHBlcnMuaAppbmRleCA3MmE5NDNlMjVhMjQ5YmY1MWY4NDRkNDBjYjdkMGY4NWE3MjIy
OTE5Li5kMTcyMmRlNjQ4ODYxNjBmMDhmNmViYWUwMzE2NDE2ZmJjOTRiMDZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSA8dHVwbGU+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvblRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIApAQCAtMTA3LDggKzEwOCwyNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNvZGUgY2FsbEJ1ZmZlcgogICAgIHJl
dHVybiBzdGF0dXM7CiB9CiAKLX0KK3RlbXBsYXRlPGF1dG8gZGVsZXRlRnVuY3Rpb24+CitzdHJ1
Y3QgSUNVRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKHR5cGVuYW1lIEZ1bmN0aW9uVHJh
aXRzPGRlY2x0eXBlKGRlbGV0ZUZ1bmN0aW9uKT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPiBw
b2ludGVyKQorICAgIHsKKyAgICAgICAgaWYgKHBvaW50ZXIpCisgICAgICAgICAgICBkZWxldGVG
dW5jdGlvbihwb2ludGVyKTsKKyAgICB9Cit9OworCituYW1lc3BhY2UgSUNVIHsKKwordW5zaWdu
ZWQgbWFqb3JWZXJzaW9uKCk7Cit1bnNpZ25lZCBtaW5vclZlcnNpb24oKTsKKworfSAvLyBuYW1l
c3BhY2UgSUNVCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb247CiB1c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZzsK
IHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXI7Cit1c2luZyBXVEY6OklDVURl
bGV0ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402947</attachid>
            <date>2020-06-27 00:34:44 -0700</date>
            <delta_ts>2020-06-27 00:46:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627003443.patch</filename>
            <type>text/plain</type>
            <size>111652</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZmQwNThlODNiODZmNjVmMTAyNTY4Zjcz
ZjIxZTA5YTU5N2JjNzE4Li4wM2VjMjVlYTMxMjJhNTk3Nzk2ZWZmY2Q4MWJiMjVmNWEwNjZjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgdW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIElDVURlbGV0ZXIgZm9yIGNsZWFuZXIgSUNVIG9iamVjdCBkZWxldGlvbi4KKyAg
ICAgICAgQWRkIElDVTo6bWFqb3JWZXJzaW9uIGFuZCBJQ1U6Om1pbm9yVmVyc2lvbiB0byBzd2l0
Y2ggdGhlIHNrZWxldG9uIHN0cmluZyBpbiBJbnRsLk51bWJlckZvcm1hdC4KKyAgICAgICAgQWRk
IG1vcmUgZmVhdHVyZXMgZm9yIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKyAgICAg
ICAgKFdURjo6SUNVRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgw
ZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUz
MjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEw
MDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyog
REZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURB
NjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRB
MURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1
IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkw
MDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJl
Z0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFy
ckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcg
QEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0g
ZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
MkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBm
dGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExT
bmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUEx
IC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90
eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JF
RjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURD
MkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
QEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYx
M2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVu
aWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29u
c3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVy
aWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpv
cGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9y
KQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRs
Q29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxh
dG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1
YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVk
NzA5ZDMwNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJh
c2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDog
dWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAg
IH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47
CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmlu
ZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVl
ZjI4ODllMjVhZjZlYTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYg
QEAgY29uc3RleHByIHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90
IG51bWJlcmluZ1N5c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkg
Y29uc3QKLXsKLSAgICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9y
bWF0KTsKLX0KLQogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1h
dCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0
Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5
ZDI2NzFjODljMjRhMDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2
ODMwNjk5ZWZlNzE5NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzks
OSArODAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdv
RGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3Qg
eyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07Cisg
ICAgdXNpbmcgVURhdGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAog
ICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZl
OTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLmZkNTQ3ZTAzYjFkODYxZWEzOTY0
MzI0ODVhOTBiNjUxZTIwYTNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9y
bWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5
c1sxXSA9IHsgIm51IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBz
dHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJ
bnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRs
TnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAg
ICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJl
KTsKQEAgLTExOSw3ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGln
aXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBv
cGVyYXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQy
MTcgY3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBh
bHBoYWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUg
Y29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4g
Mi4KLSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5p
dHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5z
aWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAg
ICAgICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0
OSwxMzMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJp
bmcmIGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQg
bGlrZSBJQ1U0Si4KK2NsYXNzIE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIg
TWVhc3VyZVVuaXQoQVNDSUlMaXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAg
ICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsg
fQorCisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAg
ICBBU0NJSUxpdGVyYWwgbV9zdWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVV
bml0PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRp
ZmllcikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10g
PSB7CisgICAgICAgIHsgImFyZWEiX3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAg
ICAgeyAidGVtcGVyYXR1cmUiX3MsICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJf
cywgImNlbnRpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwK
KyAgICAgICAgeyAiYW5nbGUiX3MsICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1
cmUiX3MsICJmYWhyZW5oZWl0Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91
bmNlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAi
dm9sdW1lIl9zLCAiZ2FsbG9uIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7
ICJtYXNzIl9zLCAiZ3JhbSJfcyB9LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAiaW5jaCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJf
cywgImtpbG9ncmFtIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9
LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAibWVnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlh
biJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgIm1pbGxpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3Ms
ICJtaWxsaXNlY29uZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJvdW5jZSJfcyB9LAorICAgICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwK
KyAgICAgICAgeyAiZGlnaXRhbCJfcywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJwb3VuZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAor
ICAgICAgICB7ICJtYXNzIl9zLCAic3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywg
InRlcmFiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisg
ICAgICAgIHsgImR1cmF0aW9uIl9zLCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3Ms
ICJ5YXJkIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07
CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBs
ZVVuaXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAg
W10gKGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRp
ZmllcikgeworICAgICAgICAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hh
cmFjdGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFj
dGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0
LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJ
ZGVudGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAh
PSBzdGQ6OmVuZChzaW1wbGVVbml0cykpIHsKKyAgICAgICAgaWYgKCFXVEY6OmNvZGVQb2ludENv
bXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIGl0ZXJhdG9yLT5zdWJUeXBl
KCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVy
Lmxlbmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7CisgICAgfQorICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2NsYXNzIFdlbGxGb3JtZWRVbml0IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IpCisgICAg
ICAgIDogbV9udW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBXZWxsRm9y
bWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0IGRlbm9taW5hdG9yKQor
ICAgICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICAgICAgLCBtX2Rlbm9taW5hdG9y
KGRlbm9taW5hdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBNZWFzdXJlVW5pdCBudW1lcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvcjsgfQorICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBkZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3I7IH0KK3ByaXZhdGU6
CisgICAgTWVhc3VyZVVuaXQgbV9udW1lcmF0b3I7CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+
IG1fZGVub21pbmF0b3I7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZp
ZXIKKyAgICBpZiAoYXV0byB1bml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVu
aXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUo
KSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhh
Y3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
IHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKKyAgICBhdXRvIHBvcyA9IHVuaXRJZGVudGlm
aWVyLmZpbmQocGVyKTsKKyAgICBpZiAocG9zID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50aWZpZXIuZmluZChw
ZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIElmIHRoZSByZXN1bHQgb2Yg
SXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhl
biByZXR1cm4gZmFsc2UuCisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJz
dHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiBy
ZXR1cm4gZmFsc2UuCisgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0
cmluZyhwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gc2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKTsKKyAgICBpZiAoIWRlbm9t
aW5hdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlh
bGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0xOTEsMjAgKzMxNCwyNSBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOwogICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX251bWJlcmluZ1N5
c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9w
dGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3Jt
YXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNp
bWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0
aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIs
ICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2Ug
aWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJp
bmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5Owor
ICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0g
U3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApA
QCAtMjEyLDcgKzM0MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7
CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IGlz
IG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszNTcsMjY4IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRz
KGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIg
fSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwg
b3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5h
cnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwi
Y29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1i
b2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5
U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAi
Y29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5
OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJv
bCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9z
KQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJv
bDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3Mp
CisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93
U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUi
X3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFt
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGlu
ZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2Nv
dW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0
czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1
cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5
U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5
U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWdu
ID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5
RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51
bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICgh
dW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdlbGxGb3JtZWRVbml0
SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9u
ZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwg
b3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9
PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpO
YXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQor
ICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0
ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGln
aXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9ICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/
IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2lu
ZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0
YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAo
bm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2Np
ZW50aWZpYyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAg
ICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYg
KG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNv
bXBhY3REaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJs
b25nIiB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9u
Z1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
dW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJf
cykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7
CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0
ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3Vw
aW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0
WmVybyIgfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIs
IFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJf
cykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2Ug
aWYgKHNpZ25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNp
Z25EaXNwbGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9z
KQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNl
IGlmIChzaWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxh
eSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZv
cm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8v
IENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZv
cm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAor
CisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoICht
X3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0
b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAw
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoICht
X2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1p
c28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNp
ZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6
OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1
aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJv
dGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcigp
OworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG51bWVyYXRvclVuaXQudHlwZSgpLCAn
LScsIG51bWVyYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0
b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IoKSkgeworICAgICAgICAg
ICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBkZW5vbWluYXRvclVuaXRWYWx1ZS52YWx1ZSgpOwor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXItbWVhc3VyZS11
bml0LyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChkZW5vbWluYXRvclVu
aXQudHlwZSgpLCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKCkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13
aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0
RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicg
OiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAq
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyAr
K2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAo
bV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRp
bmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0
aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0
YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dp
dGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNo
b3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0
LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxh
eTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29t
cGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFy
dCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWdu
RGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YXV0byIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNlQWNj
b3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2ln
bi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tl
bGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRs
TnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5J
ZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJp
bmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2Vs
ZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCks
IHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxl
IHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2Ug
U3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksNjUgKzYzNSwxMTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgICAg
IHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYW1lOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5U2lnbikgewor
ICAgICAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVt
YmVyRm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgIGNh
c2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5ldmVyOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIG1fbG9jYWxl
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIHVudW1fc2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9DVVJSRU5DWV9DT0RFLCBTdHJpbmdWaWV3KG1fY3VycmVuY3kpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLCBtX2N1cnJlbmN5Lmxlbmd0aCgpLCAmc3RhdHVzKTsKICAg
ICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
IHsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJE
aWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFD
VElPTl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICB9IGVsc2UgeworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9T
SUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VO
RF9IQUxGVVApOworI2VuZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Zm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9y
bWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzUyLDI1
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1h
dERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERl
Y2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzc4Myw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJj
ZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJl
bmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwpAQCAtMzk2LDYgKzc5Nyw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6
TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0K
QEAgLTQwMyw2ICs4MDYsNzYgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJl
bmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgc3dpdGNoIChu
b3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0
dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICAgICAgcmV0dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdp
bmVlcmluZzoKKyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJfczsKKyAgICBjYXNlIEludGxO
b3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
eworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzoKKyAgICAgICAgcmV0
dXJuICJhY2NvdW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6
CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93
OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25n
OgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKKyAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBj
YXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3Ry
aW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkp
IHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHJldHVybiAibmV2ZXIiX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICByZXR1cm4gImFsd2F5cyJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICByZXR1cm4gImV4
Y2VwdFplcm8iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVj
dCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CkBAIC00MTEsMTkgKzg4NCwzOCBAQCBKU09iamVjdCogSW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJp
bmdTeXN0ZW0pKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7Ci0g
ICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgc3dpdGNoIChtX3N0eWxl
KSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5
RGlzcGxheSkpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lTaWduU3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV91bml0
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuaXREaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdW5pdERpc3BsYXlT
dHJpbmcobV91bml0RGlzcGxheSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRl
Z2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgQVNTRVJUKG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICBicmVhazsKICAgICB9
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CisgICAgaWYg
KG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxh
eVN0cmluZyhtX3NpZ25EaXNwbGF5KSkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQogCkBAIC00
MzIsNyArOTI0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYg
dm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQogICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0
aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZv
cm1hdDo6U3R5bGUgc3R5bGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7
CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC00NDUsMjAgKzkzNywzMSBAQCBzdGF0
aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IGRvdWJsZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuICJmcmFjdGlvbiJfczsKICAgICBjYXNlIFVO
VU1fREVDSU1BTF9TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsK
KyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4
cG9uZW50U2VwYXJhdG9yIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgor
ICAgICAgICByZXR1cm4gImV4cG9uZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CiAgICAgY2Fz
ZSBVTlVNX0dST1VQSU5HX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJncm91cCJf
czsKICAgICBjYXNlIFVOVU1fQ1VSUkVOQ1lfRklFTEQ6CiAgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CiAgICAgY2FzZSBVTlVNX1BFUkNFTlRfRklFTEQ6Ci0gICAgICAgIHJldHVybiAicGVy
Y2VudFNpZ24iX3M7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyAidW5pdCIsIHdlIHNob3Vs
ZCByZXBvcnQgYXMgdW5pdC4KKyAgICAgICAgLy8gSlNUZXN0cy90ZXN0MjYyL3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGVyY2VudC1lbi1VUy5qcwor
ICAgICAgICByZXR1cm4gKHN0eWxlID09IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpVbml0KSA/
ICJ1bml0Il9zIDogInBlcmNlbnRTaWduIl9zOwogICAgIGNhc2UgVU5VTV9TSUdOX0ZJRUxEOgot
ICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWduIl9zIDogInBs
dXNTaWduIl9zOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVO
VU1fTUVBU1VSRV9VTklUX0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2Fz
ZSBVTlVNX0NPTVBBQ1RfRklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRp
ZgogICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdh
eSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCiAgICAgLy8gSWYgdGhl
eSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBz
byBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCiAgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6
Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQ
T05FTlRfU0lHTl9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CiAgICAgLy8g
QW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3Vs
ZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwpAQCAtNDY2LDcgKzk2OSw3IEBAIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAotdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVy
YXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBJbnRsRmllbGRJdGVyYXRvciYgaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmlu
ZyogdW5pdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDc4LDcgKzk4MSwxMiBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibAogICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQsIDMy
PiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOwogICAgIGludDMyX3QgYmVnaW5J
bmRleCA9IDA7CiAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUg
PSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRUeXBl
ID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICB3aGlsZSAoZmllbGRUeXBlID49IDApIHsKICAg
ICAgICAgc2l6ZV90IHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7CiAgICAgICAgIGZvciAo
YXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKQEAgLTQ4Niw3ICs5OTQs
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0u
c2l6ZSA+PSBzaXplKQogICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3Jt
YXRGaWVsZCB7IGZpZWxkVHlwZSwgc2l6ZSB9OwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkVHlw
ZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgZmllbGRUeXBlID0gaXRl
cmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CkBAIC01MDAs
NyArMTAxMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgIGF1dG8gZmllbGRU
eXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJ
bmRleCA8IHN0cmluZ0xlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxk
VHlwZSkKICAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFs
dWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRU
eXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCB2YWx1ZSkpOwogICAgICAgICBhdXRvIHBh
cnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJ
bmRleCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtNTE1LDIwICsxMDI4LDQwIEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25z
dAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0
ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAg
QVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJl
ciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Cisg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9T
dHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZp
ZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmllbGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCkBAIC01MzYsNyArMTA2OSw3IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQz
MDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNj
YzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01B
Sk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIgMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRl
IDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZv
aWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpT
U3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5v
dGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBD
dXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBz
dHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3Bs
YXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9
OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywg
TG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5l
dmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5
bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5
U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5j
eVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBt
X2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3Vy
cmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyAr
MTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07
CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNw
bGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsK
KyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29t
cGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246
OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1f
dXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NWNkYTI1MjdjM2Y2OTljOWY1YTc2
ZDE3MWY1Y2FiZGZhYjJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBK
U09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0
aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmll
bGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50
MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5kZXgsIFVFcnJvckNvZGUmIHN0YXR1cykK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgICAgICByZXR1cm4gdWZp
ZWxkcG9zaXRlcl9uZXh0KG1faXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBtX2l0ZXJhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNj
NTNiOGQ1YTZjMWY1NzZmLi5lOWQzMmEyOGQwY2JkNzlmNjQxM2Y3OTI1ODAxMjA2MTAxNTcyYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVj
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFBsdXJhbFJ1bGVzKSB9OwogCi12b2lkIEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewot
ICAgIGlmIChwbHVyYWxSdWxlcykKLSAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMp
OwotfQotCi12b2lkIEludGxQbHVyYWxSdWxlczo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1i
ZXJGb3JtYXQpCi0gICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0
IFVFbnVtZXJhdGlvbkRlbGV0ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24q
IGVudW1lcmF0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAg
ICAgICAgICAgdWVudW1fY2xvc2UoZW51bWVyYXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51
bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CiAKIEludGxQbHVyYWxS
dWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKQEAgLTEyNSwzNCArMTA4LDggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJp
bmcgPT0gIm9yZGluYWwiID8gVHlwZTo6T3JkaW5hbCA6IFR5cGU6OkNhcmRpbmFsOwogCi0gICAg
dW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsK
LQotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9u
RGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwot
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxP
YmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAx
LCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0g
ICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOwotICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2Fs
ZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNjEsMTQgKzExOCwyMCBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0
cnVlKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZh
bHVlKCkpOwotICAgIH0gZWxzZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0xOTEsMTEgKzE1NCwxOCBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFs
Il9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRp
Z2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFj
dGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMudmFsdWUoKSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3Vu
ZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4
MmEwZTY5M2EwY2JkMDgyYjIyMGYyNTVkODJhZTc0YjcxLi5mYTQzM2RmYTI4YzBhZjMzNTg4YzUx
MmY0MzQ4NGE3NzVlNDBjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC01Myw2ICs1NCw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7
CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0
OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
QEAgLTY2LDEyICs3MCw4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5h
bCwgT3JkaW5hbCB9OwogCi0gICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAg
ICB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1
Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9
IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxl
dGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1
cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZv
cm1hdDsKQEAgLTgwLDggKzgwLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50
bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6
OkNhcmRpbmFsIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdj
M2M4NTQ0YTJiNzQ5ODAzMGY3YzQ2ZTcuLjkwNjJlMmNkODg0Yjg0MjU0ZGM5MGMzMjcxZTY1MjU2
MWU5NWRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNl
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciog
cmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRv
cigpKFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
KSBjb25zdAotewotICAgIGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1
cmVsZGF0ZWZtdF9jbG9zZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShV
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1h
dCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAgICAgfQogCi0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRl
cm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdl
dCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1h
dHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVu
aXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBh
ZTZhNTAyNzBkMTZmODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1YzFjYTNkZGZiYjk5YTIxZDQxM2E2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNs
YXNzIFN0eWxlIDogdWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVj
dCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0
cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRlZm10X2Nsb3NlPjsKKyAgICB1c2lu
ZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGUxMmY0ODE2YzNlMTQ0MjU1YzFhNGY1
MzJhMjg2NzdkZGIzZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3YTZjODc4MDBiNTVhZGM2MDA3MjIw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtMzA3Niw5ICszMDc3LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKEpTR2xvYmFsT2IKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
LSAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87Ci0gICAgdV9nZXRWZXJzaW9uKHZlcnNpb25J
bmZvKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNpb25JbmZvWzBd
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OklDVTo6bWFqb3JW
ZXJzaW9uKCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Bc3NlcnRFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYx
ODI1YTBjZjE2NTdlMTFhYmRiYTguLjg0NTZlMzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNi
MDVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
LDYgKzE4MCw3IEBACiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVy
SlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9Owog
CQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJC
RkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFG
QzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNW
YWx1ZU1hbGxvYy5jcHAgKi87IH07CisJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRB
MEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07
CiAJCUVCNjFFREM3MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5
Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiAr
NzMyLDcgQEAKIAkJRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdl
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUy
MDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQg
LyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1G
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFF
NTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMx
RkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2
Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCi0JCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCAqLywKKwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMg
LyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEg
LyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNh
c3RzLmggKi8sCiAJCQkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vz
cy5oICovLApAQCAtMTQ1Miw2ICsxNDU0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNw
cCAqLywKKwkJCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8s
CiAJCQkJNTJCMjI4QzEyNDU4REM4MjAwNzUzRDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gaWN1OwpAQCAtMTY3Niw2ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAz
OTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVl
TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAv
KiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJ
QTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyog
VHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJE
MzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApA
QCAtMTc2NCw2ICsxNzY3LDcgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhy
ZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTUyMENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENG
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5
ZTVkNWRhMDdjYmFiYTk0ZTk0NjExMDFlMjJkLi5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2Uw
OTUyMDY2ZDBiZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIHVuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKyAgICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAog
KQogCiBzZXQoV1RGX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKaW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3
Ny4uZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwg
ZmluYWwgewogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0K
IAotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0K
IAogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFm
MzhkLi5jMjJhOGFlMzQ0NjFjM2IzY2M4MDJiZmNiNTMwMWE2NjcyYmM5ZWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBm
aW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBz
dGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBAIGlubGluZSBT
dHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFy
YWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVND
SUlMaXRlcmFsIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhj
b25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMu
Y3BwIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzZmM2UxMGNmNDZmNTk4YjM4ZjFiMDQ5MjY1ZmNjZTdmZTgyYzczMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMu
aD4KKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdXZlcm51bS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBJQ1UgeworCitzdGF0aWMgY29uc3QgVVZlcnNpb25J
bmZvJiB2ZXJzaW9uKCkKK3sKKyAgICBzdGF0aWMgVVZlcnNpb25JbmZvIHZlcnNpb25zIHsgfTsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICB1X2dldFZlcnNpb24odmVyc2lvbnMpOworICAgIH0pOwor
ICAgIHJldHVybiB2ZXJzaW9uczsKK30KKwordW5zaWduZWQgbWFqb3JWZXJzaW9uKCkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KDAgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZl
cnNpb24oKVswXTsKK30KKwordW5zaWduZWQgbWlub3JWZXJzaW9uKCkKK3sKKyAgICBzdGF0aWNf
YXNzZXJ0KDEgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZlcnNpb24oKVsx
XTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXVEY6OklDVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5oCmluZGV4IDcyYTk0M2UyNWEyNDliZjUxZjg0NGQ0MGNiN2QwZjg1YTcy
MjI5MTkuLmQxNzIyZGU2NDg4NjE2MGYwOGY2ZWJhZTAzMTY0MTZmYmM5NGIwNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlIDx0dXBsZT4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC0xMDcsOCArMTA4LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxsQnVmZmVyCiAgICAg
cmV0dXJuIHN0YXR1czsKIH0KIAotfQordGVtcGxhdGU8YXV0byBkZWxldGVGdW5jdGlvbj4KK3N0
cnVjdCBJQ1VEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkodHlwZW5hbWUgRnVuY3Rpb25U
cmFpdHM8ZGVjbHR5cGUoZGVsZXRlRnVuY3Rpb24pPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+
IHBvaW50ZXIpCisgICAgeworICAgICAgICBpZiAocG9pbnRlcikKKyAgICAgICAgICAgIGRlbGV0
ZUZ1bmN0aW9uKHBvaW50ZXIpOworICAgIH0KK307CisKK25hbWVzcGFjZSBJQ1UgeworCit1bnNp
Z25lZCBtYWpvclZlcnNpb24oKTsKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpOworCit9IC8vIG5h
bWVzcGFjZSBJQ1UKK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5n
OwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcjsKK3VzaW5nIFdURjo6SUNV
RGVsZXRlcjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYTYzNTk3ZjRhMjBlZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYwOWMxOS4uNzFiNzJh
N2Y5OWIwYmFmOGYxNjc2OWQ4MmUwNjAxMzc0YWU5ZGFjOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0w
Ni0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01B
LTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCB0ZXN0MjYyIGZhaWx1cmVzIGFy
ZSBkdWUgdG8gb2xkIElDVSB2ZXJzaW9uLiBPbmNlIElDVSBpcyB1cGRhdGVkLCB0aGV5IHdpbGwg
Z28gYXdheS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQuanM6CisgICAgICAgICh0ZXN0TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKHNob3Vs
ZEJlLnRlc3ROdW1iZXJGb3JtYXQuSW50bC5OdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwog
MjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC11bmlmaWVkLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmll
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZTdiZGJjNzZmZDQyMjdkM2VmNzYzMjY0OGE0NmM0NTUwYjlhYjc0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5p
ZmllZC5qcwpAQCAtMCwwICsxLDUyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworc2hvdWxkQmUoKDI5OTc5MjQ1OCku
dG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgIHN0eWxlOiAidW5pdCIsCisgICAgdW5pdDog
Im1ldGVyLXBlci1zZWNvbmQiLAorICAgIHVuaXREaXNwbGF5OiAic2hvcnQiCit9KSwgYDI5OSw3
OTIsNDU4IG0vc2ApOworCitzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiZW4t
VVMiLCB7CisgICAgbm90YXRpb246ICJzY2llbnRpZmljIgorfSksIGA5Ljg3N0U4YCk7CisKK3No
b3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICBub3RhdGlv
bjogImVuZ2luZWVyaW5nIgorfSksIGA5ODcuNjU0RTZgKTsKKworc2hvdWxkQmUoKDk4NzY1NDMy
MSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgIG5vdGF0aW9uOiAiY29tcGFjdCIsCisg
ICAgY29tcGFjdERpc3BsYXk6ICJsb25nIgorfSksIGA5ODggbWlsbGlvbmApOworCitzaG91bGRC
ZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgbm90YXRpb246ICJz
Y2llbnRpZmljIiwKKyAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAyLAorICAgIHN0eWxlOiAidW5pdCIsCisgICAgdW5pdDogIm1ldGVyLXBl
ci1zZWNvbmQiCit9KSwgYDMuMDBFOCBtL3NgKTsKKworc2hvdWxkQmUoKDU1KS50b0xvY2FsZVN0
cmluZygiZW4tVVMiLCB7CisgICAgc2lnbkRpc3BsYXk6ICJhbHdheXMiCit9KSwgYCs1NWApOwor
CitzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImJuIiwgeworICAgIHN0eWxlOiAiY3Vy
cmVuY3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBjdXJyZW5jeVNpZ246ICJhY2NvdW50
aW5nIgorfSksIGAo4Ken4Kem4KemLuCnpuCnpuKCrClgKTsKKworc2hvdWxkQmUoKDAuNTUpLnRv
TG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICBzdHlsZTogInBlcmNlbnQiLAorICAgIHNpZ25E
aXNwbGF5OiAiZXhjZXB0WmVybyIKK30pLCBgKzU1JWApOworCitzaG91bGRCZSgoMTAwKS50b0xv
Y2FsZVN0cmluZygiZW4tQ0EiLCB7CisgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgY3VycmVu
Y3k6ICJVU0QiLAorICAgIGN1cnJlbmN5RGlzcGxheTogIm5hcnJvd1N5bWJvbCIKK30pLCBgJDEw
MC4wMGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCAzMWJiYzRhMjVjMzRh
MWJkNDdhNWYzZjAwMDUzMTc2OTE4YzFlNTYxLi5lZjc0YTU5ZGJjYTFmYTI1MGVjYzdhNTM1MTNl
YWQ5YjZkNDAwMjVmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNDksMTIg
KzQ5LDE1IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJs
ZURpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICBzdHlsZTogImRlY2ltYWwiLAogICAgICAgICAg
ICAgY3VycmVuY3k6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogdW5k
ZWZpbmVkLAorICAgICAgICAgICAgY3VycmVuY3lTaWduOiB1bmRlZmluZWQsCiAgICAgICAgICAg
ICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSwKICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRp
Z2l0czogMCwKICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAgICAgICAg
ICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAgICAgbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VHcm91cGlu
ZzogdHJ1ZQorICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRydWUsCisgICAgICAgICAgICBub3Rh
dGlvbjogInN0YW5kYXJkIiwKKyAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIKICAgICAg
ICAgfTsKICAgICAgICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9ucywgZGlmZmVyZW5jZSk7
CiAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkZWZhdWx0T3B0aW9ucyk7CkBAIC0xMjQs
MTEgKzEyNywxMSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9z
c2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywgeyBnZXQgc3R5bGUoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0pLCBFcnJvcik7CiAK
IC8vIFRoZSBvcHRpb24gY3VycmVuY3kgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVu
Y3knLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKLXNob3Vs
ZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ1VzRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVu
Y3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1pbmltdW1G
cmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKLXNo
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAn
Y3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0fV0pLCB0cnVlKTsK
LXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ2NMZid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAn
Y3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0fV0pLCB0cnVl
KTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0
cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywg
e3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJv
bCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZv
cm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnVXNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
VVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwg
dHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1i
b2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogNCwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJG
b3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5j
eTogJ2NMZid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJk
JywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSks
IHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4n
LCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJ30pLCBbe2xvY2FsZTogJ2VuJywg
c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJywgY3VycmVuY3lEaXNwbGF5OiAnc3lt
Ym9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVMk
J30pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyd9KSwgUmFuZ2VFcnJvcik7CiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5j
eScsIGN1cnJlbmN5OiAnVVMgRG9sbGFyJ30pLCBSYW5nZUVycm9yKTsKQEAgLTEzNiw5ICsxMzks
OSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZm
ZXJlbmNlcykgewogc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7c3R5bGU6ICdkZWNpbWFsJywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9jYWxlOiAnZW4n
LCBzdHlsZTogJ2RlY2ltYWwnfV0pLCB0cnVlKTsKIAogLy8gVGhlIG9wdGlvbiBjdXJyZW5jeURp
c3BsYXkgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQo
SW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VT
RCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJywgbWluaW11
bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwot
c2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6
ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJ30p
LCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3Vy
cmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNE
JywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnLCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Citz
aG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJ30pLCBb
e2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVu
Y3lEaXNwbGF5OiAnY29kZScsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxk
QmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJy
ZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJ30pLCBbe2xv
Y2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lE
aXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRC
ZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJl
bmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJ30pLCBbe2xvY2Fs
ZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNw
bGF5OiAnbmFtZScsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGln
aXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwogc2hvdWxkVGhyb3co
KCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5j
eTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ0NvZGUnfSksIFJhbmdlRXJyb3IpOwogc2hvdWxk
VGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ1VTRCcsIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7IHRocm93IG5ldyBFcnJvcigp
OyB9fSksIEVycm9yKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3N0eWxlOiAnZGVjaW1hbCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7
bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2RlY2ltYWwnfV0pLCB0cnVlKTsKQEAgLTE3MiwxMiArMTc1
LDEyIEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURp
ZmZlcmVuY2VzKSB7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyMX0pLCBSYW5nZUVycm9yKTsKIAogLy8gVGhlIG9wdGlv
biBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3Vs
ZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmltdW1TaWdu
aWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bVNpZ25pZmljYW50RGln
aXRzOiA2LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIxfV0pLCB0cnVlKTsKK3Nob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB1
bmRlZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM6IDYsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogMjF9XSksIHRydWUpOwog
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czogMH0pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHttaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIyfSksIFJhbmdlRXJy
b3IpOwogCiAvLyBUaGUgb3B0aW9uIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyBpcyBwcm9jZXNz
ZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxlOiAnZW4nLCBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogNn1d
KSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHttYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVm
aW5lZCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAxLCBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM6IDZ9XSksIHRydWUpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2Vu
Jywge21pbmltdW1TaWduaWZpY2FudERpZ2l0czogNywgbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
OiA2fSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMH0pLCBSYW5nZUVycm9yKTsKIHNob3Vs
ZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHM6IDIyfSksIFJhbmdlRXJyb3IpOwpAQCAtNDM1LDcgKzQzOCw3IEBAIGZ1bmN0aW9uIHRl
c3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiB7CiAg
ICAgbGV0IG9wdGlvbnMgPSBkZWZhdWx0TkZvcm1hdC5yZXNvbHZlZE9wdGlvbnMoKTsKICAgICBk
ZWxldGUgb3B0aW9ucy5sb2NhbGU7IAotICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9wdGlv
bnMpLCAneyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFsIiwibWluaW11
bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4aW11bUZyYWN0
aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZX0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShvcHRpb25zKSwgJ3sibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVj
aW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAs
Im1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOnRydWUsIm5vdGF0aW9uIjoi
c3RhbmRhcmQiLCJzaWduRGlzcGxheSI6ImF1dG8ifScpOwogfQogCiAvLyBMZWdhY3kgY29tcGF0
aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYx
NjZmMGI4ZWJiOTk5ZGI4NWNmNGUxNjRiOTRkZjEuLjIwZTVlNTM5OWEzYzFhYTk2N2RlN2E5MGM1
ZGI1YTdjNWFjNjY1MzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAor
KysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI4LDcgKzI4LDYgQEAgc2tpcDoK
ICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0g
SW50bC5EaXNwbGF5TmFtZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0gSW50bC5OdW1i
ZXJGb3JtYXQtdW5pZmllZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9EYXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbAppbmRleCBmOGI5ZGQ5NmI5ZjdkZThiNzYyNWQ1MDk4Y2MwMjAxNDJlYTA1
Y2ZhLi4xODEyODM5ZjI1YWUwMmEyYzI4MjlmZjg5NjAyNTViNzE0MTVmYjMyIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNzA0LDkgKzE3MDQsMTE0IEBAIHRlc3QvaW50bDQwMi9M
b2NhbGUvbGlrZWx5LXN1YnRhZ3MuanM6CiB0ZXN0L2ludGw0MDIvTG9jYWxlL3Byb3RvdHlwZS9t
aW5pbWl6ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1hZGRzLWxpa2VseS1zdWJ0YWdz
LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBi
ZSAiZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBi
ZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBz
aG91bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7C
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dC9lbmdpbmVlcmluZy1zY2llbnRpZmljLWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oie
RTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1lbi1VUy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtamEtSlAu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5F
MMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2ll
bnRpZmljLWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvZW5n
aW5lZXJpbmctc2NpZW50aWZpYy16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrss
IMKrLeKInsK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0L251bWJlcmluZy1zeXN0ZW1zLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBudW1iZXJpbmdTeXN0ZW06IGFkbG0sIGRpZ2l0OiAwIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDC
uywgwqvwnqWQwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBu
dW1iZXJpbmdTeXN0ZW06IGFkbG0sIGRpZ2l0OiAwIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywg
wqvwnqWQwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVuY3ktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wLDAwwqAkwrssIMKrMCwwMMKgJMK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrLTAsMDDCoCTCuywgwqswLDAwwqAkwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVuY3ktZW4tVVMu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4w
MCnCuywgwqskMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAwwrspIHRvIGJlIHRydWUn
Cit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXkt
Y3VycmVuY3ktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqygkMC4wMCnCuywgwqskMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAw
wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXQvc2lnbkRpc3BsYXktY3VycmVuY3kta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1i
ZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS16aC1UVy5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDAp
wrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNw
bGF5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRa
ZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZv
cm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWVuLVVTLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqst
MMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0w
LjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25E
aXNwbGF5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNl
cHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJl
ckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWtvLUtSLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUo
wqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3Np
Z25EaXNwbGF5LXJvdW5kaW5nLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqsrMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyswwrssIMKrMMK7KSB0byBiZSB0cnVl
JwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5
LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJv
KSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0L3VuaXQtamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq+aZgumAny05ODfjgq3jg63jg6Hjg7zjg4jjg6vCuywg
wqvmmYLpgJ8gLTk4NyDjgq3jg63jg6Hjg7zjg4jjg6vCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq+aZgumAny05ODfjgq3j
g63jg6Hjg7zjg4jjg6vCuywgwqvmmYLpgJ8gLTk4NyDjgq3jg63jg6Hjg7zjg4jjg6vCuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC91bml0
LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUo
wqstOTg35YWs6YeML+Wwj+aZgsK7LCDCqy05ODcg5YWs6YeML+Wwj+aZgsK7KSB0byBiZSB0cnVl
JworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTk4
N+WFrOmHjC/lsI/mmYLCuywgwqstOTg3IOWFrOmHjC/lsI/mmYLCuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJp
bmctc2NpZW50aWZpYy1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmlu
aXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0g
ZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0
cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAt
SW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywg
wqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtamEtSlAuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1rby1LUi5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0
aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmlj
LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVl
cmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5
LWN1cnJlbmN5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6
IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNcK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrNsK7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3Jt
YXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3ktZW4tVVMuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5
LWN1cnJlbmN5LWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6
IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3Jt
YXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3ktemgtVFcuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy9zaWduRGlzcGxheS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
LTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKr
McK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAo
ZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0
cy9zaWduRGlzcGxheS1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAw
MSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0
WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVl
JwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWdu
RGlzcGxheS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhj
ZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6
IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVz
dC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxh
eS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVy
byk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0
aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRs
NDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS16aC1U
Vy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJworICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy91bml0LWphLUpQLmpzOgorICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqs0wrssIMKrNsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
dW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzbCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMv
dW5pdC16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzPCuywgwqs0wrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9y
bWF0L2NvbnN0cnVjdG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanM6CiAgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8g
YmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402948</attachid>
            <date>2020-06-27 00:46:43 -0700</date>
            <delta_ts>2020-06-27 01:08:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627004642.patch</filename>
            <type>text/plain</type>
            <size>111661</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZmQwNThlODNiODZmNjVmMTAyNTY4Zjcz
ZjIxZTA5YTU5N2JjNzE4Li4wM2VjMjVlYTMxMjJhNTk3Nzk2ZWZmY2Q4MWJiMjVmNWEwNjZjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgdW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIElDVURlbGV0ZXIgZm9yIGNsZWFuZXIgSUNVIG9iamVjdCBkZWxldGlvbi4KKyAg
ICAgICAgQWRkIElDVTo6bWFqb3JWZXJzaW9uIGFuZCBJQ1U6Om1pbm9yVmVyc2lvbiB0byBzd2l0
Y2ggdGhlIHNrZWxldG9uIHN0cmluZyBpbiBJbnRsLk51bWJlckZvcm1hdC4KKyAgICAgICAgQWRk
IG1vcmUgZmVhdHVyZXMgZm9yIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKyAgICAg
ICAgKFdURjo6SUNVRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgw
ZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUz
MjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEw
MDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyog
REZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURB
NjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRB
MURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1
IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkw
MDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJl
Z0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFy
ckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcg
QEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0g
ZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
MkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBm
dGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExT
bmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUEx
IC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90
eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JF
RjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURD
MkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
QEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYx
M2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVu
aWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29u
c3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVy
aWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpv
cGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9y
KQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRs
Q29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxh
dG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1
YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVk
NzA5ZDMwNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJh
c2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDog
dWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAg
IH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47
CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmlu
ZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVl
ZjI4ODllMjVhZjZlYTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYg
QEAgY29uc3RleHByIHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90
IG51bWJlcmluZ1N5c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkg
Y29uc3QKLXsKLSAgICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9y
bWF0KTsKLX0KLQogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1h
dCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0
Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5
ZDI2NzFjODljMjRhMDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2
ODMwNjk5ZWZlNzE5NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzks
OSArODAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdv
RGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3Qg
eyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07Cisg
ICAgdXNpbmcgVURhdGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAog
ICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZl
OTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLmZkNTQ3ZTAzYjFkODYxZWEzOTY0
MzI0ODVhOTBiNjUxZTIwYTNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9y
bWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5
c1sxXSA9IHsgIm51IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBz
dHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJ
bnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRs
TnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAg
ICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJl
KTsKQEAgLTExOSw3ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGln
aXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBv
cGVyYXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQy
MTcgY3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBh
bHBoYWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUg
Y29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4g
Mi4KLSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5p
dHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5z
aWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAg
ICAgICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0
OSwxMzMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJp
bmcmIGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQg
bGlrZSBJQ1U0Si4KK2NsYXNzIE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIg
TWVhc3VyZVVuaXQoQVNDSUlMaXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAg
ICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsg
fQorCisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAg
ICBBU0NJSUxpdGVyYWwgbV9zdWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVV
bml0PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRp
ZmllcikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10g
PSB7CisgICAgICAgIHsgImFyZWEiX3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAg
ICAgeyAidGVtcGVyYXR1cmUiX3MsICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJf
cywgImNlbnRpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwK
KyAgICAgICAgeyAiYW5nbGUiX3MsICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1
cmUiX3MsICJmYWhyZW5oZWl0Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91
bmNlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAi
dm9sdW1lIl9zLCAiZ2FsbG9uIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7
ICJtYXNzIl9zLCAiZ3JhbSJfcyB9LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAiaW5jaCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJf
cywgImtpbG9ncmFtIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9
LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAibWVnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlh
biJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgIm1pbGxpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3Ms
ICJtaWxsaXNlY29uZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJvdW5jZSJfcyB9LAorICAgICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwK
KyAgICAgICAgeyAiZGlnaXRhbCJfcywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJwb3VuZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAor
ICAgICAgICB7ICJtYXNzIl9zLCAic3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywg
InRlcmFiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisg
ICAgICAgIHsgImR1cmF0aW9uIl9zLCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3Ms
ICJ5YXJkIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07
CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBs
ZVVuaXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAg
W10gKGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRp
ZmllcikgeworICAgICAgICAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hh
cmFjdGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFj
dGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0
LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJ
ZGVudGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAh
PSBzdGQ6OmVuZChzaW1wbGVVbml0cykpIHsKKyAgICAgICAgaWYgKCFXVEY6OmNvZGVQb2ludENv
bXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIGl0ZXJhdG9yLT5zdWJUeXBl
KCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVy
Lmxlbmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7CisgICAgfQorICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2NsYXNzIFdlbGxGb3JtZWRVbml0IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IpCisgICAg
ICAgIDogbV9udW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBXZWxsRm9y
bWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0IGRlbm9taW5hdG9yKQor
ICAgICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICAgICAgLCBtX2Rlbm9taW5hdG9y
KGRlbm9taW5hdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBNZWFzdXJlVW5pdCBudW1lcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvcjsgfQorICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBkZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3I7IH0KK3ByaXZhdGU6
CisgICAgTWVhc3VyZVVuaXQgbV9udW1lcmF0b3I7CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+
IG1fZGVub21pbmF0b3I7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZp
ZXIKKyAgICBpZiAoYXV0byB1bml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVu
aXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUo
KSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhh
Y3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
IHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKKyAgICBhdXRvIHBvcyA9IHVuaXRJZGVudGlm
aWVyLmZpbmQocGVyKTsKKyAgICBpZiAocG9zID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50aWZpZXIuZmluZChw
ZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIElmIHRoZSByZXN1bHQgb2Yg
SXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhl
biByZXR1cm4gZmFsc2UuCisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJz
dHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiBy
ZXR1cm4gZmFsc2UuCisgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0
cmluZyhwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gc2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKTsKKyAgICBpZiAoIWRlbm9t
aW5hdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlh
bGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0xOTEsMjAgKzMxNCwyNSBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOwogICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX251bWJlcmluZ1N5
c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9w
dGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3Jt
YXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNp
bWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0
aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIs
ICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2Ug
aWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJp
bmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5Owor
ICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0g
U3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApA
QCAtMjEyLDcgKzM0MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7
CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IGlz
IG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszNTcsMjY4IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRz
KGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIg
fSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwg
b3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5h
cnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwi
Y29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1i
b2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5
U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAi
Y29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5
OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJv
bCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9z
KQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJv
bDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3Mp
CisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93
U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUi
X3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFt
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGlu
ZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2Nv
dW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0
czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1
cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5
U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5
U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWdu
ID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5
RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51
bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICgh
dW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdlbGxGb3JtZWRVbml0
SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9u
ZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwg
b3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9
PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpO
YXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQor
ICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0
ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGln
aXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9ICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/
IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2lu
ZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0
YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAo
bm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2Np
ZW50aWZpYyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAg
ICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYg
KG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNv
bXBhY3REaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJs
b25nIiB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9u
Z1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
dW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJf
cykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7
CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0
ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3Vw
aW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0
WmVybyIgfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIs
IFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJf
cykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2Ug
aWYgKHNpZ25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNp
Z25EaXNwbGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9z
KQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNl
IGlmIChzaWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxh
eSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZv
cm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8v
IENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZv
cm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAor
CisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoICht
X3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0
b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAw
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoICht
X2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1p
c28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNp
ZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6
OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1
aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJv
dGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcigp
OworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG51bWVyYXRvclVuaXQudHlwZSgpLCAn
LScsIG51bWVyYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0
b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IoKSkgeworICAgICAgICAg
ICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBkZW5vbWluYXRvclVuaXRWYWx1ZS52YWx1ZSgpOwor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXItbWVhc3VyZS11
bml0LyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChkZW5vbWluYXRvclVu
aXQudHlwZSgpLCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKCkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13
aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0
RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicg
OiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAq
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyAr
K2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAo
bV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRp
bmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0
aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0
YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dp
dGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNo
b3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0
LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxh
eTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29t
cGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFy
dCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWdu
RGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YXV0byIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNlQWNj
b3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2ln
bi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tl
bGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRs
TnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5J
ZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJp
bmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2Vs
ZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCks
IHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxl
IHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2Ug
U3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksNjUgKzYzNSwxMTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgICAg
IHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYW1lOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5U2lnbikgewor
ICAgICAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVt
YmVyRm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgIGNh
c2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5ldmVyOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIG1fbG9jYWxl
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIHVudW1fc2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9DVVJSRU5DWV9DT0RFLCBTdHJpbmdWaWV3KG1fY3VycmVuY3kpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLCBtX2N1cnJlbmN5Lmxlbmd0aCgpLCAmc3RhdHVzKTsKICAg
ICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
IHsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJE
aWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFD
VElPTl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICB9IGVsc2UgeworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9T
SUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VO
RF9IQUxGVVApOworI2VuZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Zm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9y
bWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzUyLDI1
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1h
dERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERl
Y2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzc4Myw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJj
ZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJl
bmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwpAQCAtMzk2LDYgKzc5Nyw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6
TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0K
QEAgLTQwMyw2ICs4MDYsNzYgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJl
bmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgc3dpdGNoIChu
b3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0
dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICAgICAgcmV0dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdp
bmVlcmluZzoKKyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJfczsKKyAgICBjYXNlIEludGxO
b3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
eworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzoKKyAgICAgICAgcmV0
dXJuICJhY2NvdW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6
CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93
OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25n
OgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKKyAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBj
YXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3Ry
aW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkp
IHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHJldHVybiAibmV2ZXIiX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICByZXR1cm4gImFsd2F5cyJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICByZXR1cm4gImV4
Y2VwdFplcm8iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVj
dCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CkBAIC00MTEsMTkgKzg4NCwzOCBAQCBKU09iamVjdCogSW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJp
bmdTeXN0ZW0pKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7Ci0g
ICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgc3dpdGNoIChtX3N0eWxl
KSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5
RGlzcGxheSkpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lTaWduU3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV91bml0
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuaXREaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdW5pdERpc3BsYXlT
dHJpbmcobV91bml0RGlzcGxheSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRl
Z2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgQVNTRVJUKG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICBicmVhazsKICAgICB9
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CisgICAgaWYg
KG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxh
eVN0cmluZyhtX3NpZ25EaXNwbGF5KSkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQogCkBAIC00
MzIsNyArOTI0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYg
dm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQogICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0
aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZv
cm1hdDo6U3R5bGUgc3R5bGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7
CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC00NDUsMjAgKzkzNywzMSBAQCBzdGF0
aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IGRvdWJsZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuICJmcmFjdGlvbiJfczsKICAgICBjYXNlIFVO
VU1fREVDSU1BTF9TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsK
KyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4
cG9uZW50U2VwYXJhdG9yIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgor
ICAgICAgICByZXR1cm4gImV4cG9uZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CiAgICAgY2Fz
ZSBVTlVNX0dST1VQSU5HX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJncm91cCJf
czsKICAgICBjYXNlIFVOVU1fQ1VSUkVOQ1lfRklFTEQ6CiAgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CiAgICAgY2FzZSBVTlVNX1BFUkNFTlRfRklFTEQ6Ci0gICAgICAgIHJldHVybiAicGVy
Y2VudFNpZ24iX3M7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyAidW5pdCIsIHdlIHNob3Vs
ZCByZXBvcnQgYXMgdW5pdC4KKyAgICAgICAgLy8gSlNUZXN0cy90ZXN0MjYyL3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGVyY2VudC1lbi1VUy5qcwor
ICAgICAgICByZXR1cm4gKHN0eWxlID09IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpVbml0KSA/
ICJ1bml0Il9zIDogInBlcmNlbnRTaWduIl9zOwogICAgIGNhc2UgVU5VTV9TSUdOX0ZJRUxEOgot
ICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWduIl9zIDogInBs
dXNTaWduIl9zOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVO
VU1fTUVBU1VSRV9VTklUX0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2Fz
ZSBVTlVNX0NPTVBBQ1RfRklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRp
ZgogICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdh
eSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCiAgICAgLy8gSWYgdGhl
eSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBz
byBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCiAgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6
Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQ
T05FTlRfU0lHTl9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CiAgICAgLy8g
QW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3Vs
ZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwpAQCAtNDY2LDcgKzk2OSw3IEBAIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAotdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVy
YXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBJbnRsRmllbGRJdGVyYXRvciYgaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmlu
ZyogdW5pdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDc4LDcgKzk4MSwxMiBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibAogICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQsIDMy
PiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOwogICAgIGludDMyX3QgYmVnaW5J
bmRleCA9IDA7CiAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUg
PSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRUeXBl
ID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICB3aGlsZSAoZmllbGRUeXBlID49IDApIHsKICAg
ICAgICAgc2l6ZV90IHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7CiAgICAgICAgIGZvciAo
YXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKQEAgLTQ4Niw3ICs5OTQs
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0u
c2l6ZSA+PSBzaXplKQogICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3Jt
YXRGaWVsZCB7IGZpZWxkVHlwZSwgc2l6ZSB9OwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkVHlw
ZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgZmllbGRUeXBlID0gaXRl
cmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CkBAIC01MDAs
NyArMTAxMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgIGF1dG8gZmllbGRU
eXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJ
bmRleCA8IHN0cmluZ0xlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxk
VHlwZSkKICAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFs
dWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRU
eXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCB2YWx1ZSkpOwogICAgICAgICBhdXRvIHBh
cnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJ
bmRleCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtNTE1LDIwICsxMDI4LDQwIEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25z
dAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0
ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAg
QVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJl
ciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Cisg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9T
dHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZp
ZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmllbGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCkBAIC01MzYsNyArMTA2OSw3IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQz
MDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNj
YzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01B
Sk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIgMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRl
IDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZv
aWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpT
U3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5v
dGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBD
dXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBz
dHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3Bs
YXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9
OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywg
TG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5l
dmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5
bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5
U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5j
eVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBt
X2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3Vy
cmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyAr
MTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07
CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNw
bGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsK
KyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29t
cGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246
OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1f
dXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NWNkYTI1MjdjM2Y2OTljOWY1YTc2
ZDE3MWY1Y2FiZGZhYjJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBK
U09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0
aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmll
bGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50
MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5kZXgsIFVFcnJvckNvZGUmIHN0YXR1cykK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgICAgICByZXR1cm4gdWZp
ZWxkcG9zaXRlcl9uZXh0KG1faXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBtX2l0ZXJhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNj
NTNiOGQ1YTZjMWY1NzZmLi5lOWQzMmEyOGQwY2JkNzlmNjQxM2Y3OTI1ODAxMjA2MTAxNTcyYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVj
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFBsdXJhbFJ1bGVzKSB9OwogCi12b2lkIEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewot
ICAgIGlmIChwbHVyYWxSdWxlcykKLSAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMp
OwotfQotCi12b2lkIEludGxQbHVyYWxSdWxlczo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1i
ZXJGb3JtYXQpCi0gICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0
IFVFbnVtZXJhdGlvbkRlbGV0ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24q
IGVudW1lcmF0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAg
ICAgICAgICAgdWVudW1fY2xvc2UoZW51bWVyYXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51
bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CiAKIEludGxQbHVyYWxS
dWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKQEAgLTEyNSwzNCArMTA4LDggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJp
bmcgPT0gIm9yZGluYWwiID8gVHlwZTo6T3JkaW5hbCA6IFR5cGU6OkNhcmRpbmFsOwogCi0gICAg
dW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsK
LQotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9u
RGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwot
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxP
YmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAx
LCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0g
ICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOwotICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2Fs
ZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNjEsMTQgKzExOCwyMCBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0
cnVlKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZh
bHVlKCkpOwotICAgIH0gZWxzZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0xOTEsMTEgKzE1NCwxOCBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFs
Il9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRp
Z2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFj
dGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMudmFsdWUoKSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3Vu
ZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4
MmEwZTY5M2EwY2JkMDgyYjIyMGYyNTVkODJhZTc0YjcxLi5mYTQzM2RmYTI4YzBhZjMzNTg4YzUx
MmY0MzQ4NGE3NzVlNDBjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC01Myw2ICs1NCw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7
CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0
OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
QEAgLTY2LDEyICs3MCw4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5h
bCwgT3JkaW5hbCB9OwogCi0gICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAg
ICB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1
Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9
IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxl
dGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1
cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZv
cm1hdDsKQEAgLTgwLDggKzgwLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50
bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6
OkNhcmRpbmFsIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdj
M2M4NTQ0YTJiNzQ5ODAzMGY3YzQ2ZTcuLjkwNjJlMmNkODg0Yjg0MjU0ZGM5MGMzMjcxZTY1MjU2
MWU5NWRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNl
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciog
cmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRv
cigpKFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
KSBjb25zdAotewotICAgIGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1
cmVsZGF0ZWZtdF9jbG9zZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShV
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1h
dCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAgICAgfQogCi0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRl
cm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdl
dCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1h
dHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVu
aXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBh
ZTZhNTAyNzBkMTZmODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1YzFjYTNkZGZiYjk5YTIxZDQxM2E2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNs
YXNzIFN0eWxlIDogdWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVj
dCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0
cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRlZm10X2Nsb3NlPjsKKyAgICB1c2lu
ZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGUxMmY0ODE2YzNlMTQ0MjU1YzFhNGY1
MzJhMjg2NzdkZGIzZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3YTZjODc4MDBiNTVhZGM2MDA3MjIw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtMzA3Niw5ICszMDc3LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKEpTR2xvYmFsT2IKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
LSAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87Ci0gICAgdV9nZXRWZXJzaW9uKHZlcnNpb25J
bmZvKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNpb25JbmZvWzBd
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OklDVTo6bWFqb3JW
ZXJzaW9uKCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Bc3NlcnRFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYx
ODI1YTBjZjE2NTdlMTFhYmRiYTguLjg0NTZlMzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNi
MDVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
LDYgKzE4MCw3IEBACiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVy
SlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9Owog
CQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJC
RkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFG
QzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNW
YWx1ZU1hbGxvYy5jcHAgKi87IH07CisJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRB
MEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07
CiAJCUVCNjFFREM3MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5
Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiAr
NzMyLDcgQEAKIAkJRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdl
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUy
MDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQg
LyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1G
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFF
NTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMx
RkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2
Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCi0JCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCAqLywKKwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMg
LyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEg
LyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNh
c3RzLmggKi8sCiAJCQkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vz
cy5oICovLApAQCAtMTQ1Miw2ICsxNDU0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNw
cCAqLywKKwkJCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8s
CiAJCQkJNTJCMjI4QzEyNDU4REM4MjAwNzUzRDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gaWN1OwpAQCAtMTY3Niw2ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAz
OTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVl
TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAv
KiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJ
QTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyog
VHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJE
MzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApA
QCAtMTc2NCw2ICsxNzY3LDcgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhy
ZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTUyMENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENG
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5
ZTVkNWRhMDdjYmFiYTk0ZTk0NjExMDFlMjJkLi5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2Uw
OTUyMDY2ZDBiZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIHVuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKyAgICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAog
KQogCiBzZXQoV1RGX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKaW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3
Ny4uZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwg
ZmluYWwgewogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0K
IAotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0K
IAogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFm
MzhkLi44MzBhYTc0ODkxOTA3ODYwMzIyZjQxN2Q3MThlYTJiY2FmOGQ2NzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBm
aW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0
cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzZmM2UxMGNmNDZmNTk4YjM4ZjFiMDQ5MjY1ZmNjZTdmZTgyYzczMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuaD4KKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdXZlcm51
bS5oPgorCituYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBJQ1UgeworCitzdGF0aWMgY29uc3Qg
VVZlcnNpb25JbmZvJiB2ZXJzaW9uKCkKK3sKKyAgICBzdGF0aWMgVVZlcnNpb25JbmZvIHZlcnNp
b25zIHsgfTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICB1X2dldFZlcnNpb24odmVyc2lvbnMpOwor
ICAgIH0pOworICAgIHJldHVybiB2ZXJzaW9uczsKK30KKwordW5zaWduZWQgbWFqb3JWZXJzaW9u
KCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KDAgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAg
cmV0dXJuIHZlcnNpb24oKVswXTsKK30KKwordW5zaWduZWQgbWlub3JWZXJzaW9uKCkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KDEgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZl
cnNpb24oKVsxXTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXVEY6OklDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oIGIvU291cmNlL1dURi93dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oCmluZGV4IDcyYTk0M2UyNWEyNDliZjUxZjg0NGQ0MGNi
N2QwZjg1YTcyMjI5MTkuLmQxNzIyZGU2NDg4NjE2MGYwOGY2ZWJhZTAzMTY0MTZmYmM5NGIwNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCkBAIC0xMDcsOCArMTA4LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxsQnVm
ZmVyCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotfQordGVtcGxhdGU8YXV0byBkZWxldGVGdW5j
dGlvbj4KK3N0cnVjdCBJQ1VEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkodHlwZW5hbWUg
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUoZGVsZXRlRnVuY3Rpb24pPjo6dGVtcGxhdGUgQXJndW1l
bnRUeXBlPDA+IHBvaW50ZXIpCisgICAgeworICAgICAgICBpZiAocG9pbnRlcikKKyAgICAgICAg
ICAgIGRlbGV0ZUZ1bmN0aW9uKHBvaW50ZXIpOworICAgIH0KK307CisKK25hbWVzcGFjZSBJQ1Ug
eworCit1bnNpZ25lZCBtYWpvclZlcnNpb24oKTsKK3Vuc2lnbmVkIG1pbm9yVmVyc2lvbigpOwor
Cit9IC8vIG5hbWVzcGFjZSBJQ1UKK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1
Y2VDU3RyaW5nOwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcjsKK3VzaW5n
IFdURjo6SUNVRGVsZXRlcjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYTYzNTk3ZjRhMjBlZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYwOWMx
OS4uNzFiNzJhN2Y5OWIwYmFmOGYxNjc2OWQ4MmUwNjAxMzc0YWU5ZGFjOCAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3JtYXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCB0ZXN0MjYyIGZh
aWx1cmVzIGFyZSBkdWUgdG8gb2xkIElDVSB2ZXJzaW9uLiBPbmNlIElDVSBpcyB1cGRhdGVkLCB0
aGV5IHdpbGwgZ28gYXdheS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11
bmlmaWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQuanM6CisgICAgICAgICh0ZXN0TnVtYmVyRm9ybWF0KToKKyAgICAg
ICAgKHNob3VsZEJlLnRlc3ROdW1iZXJGb3JtYXQuSW50bC5OdW1iZXJGb3JtYXQpOgorICAgICAg
ICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMu
eWFtbDoKKwogMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC11bmlmaWVkLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtdW5pZmllZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTdiZGJjNzZmZDQyMjdkM2VmNzYzMjY0OGE0NmM0
NTUwYjlhYjc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtdW5pZmllZC5qcwpAQCAtMCwwICsxLDUyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworc2hvdWxkQmUoKDI5
OTc5MjQ1OCkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgIHN0eWxlOiAidW5pdCIsCisg
ICAgdW5pdDogIm1ldGVyLXBlci1zZWNvbmQiLAorICAgIHVuaXREaXNwbGF5OiAic2hvcnQiCit9
KSwgYDI5OSw3OTIsNDU4IG0vc2ApOworCitzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0
cmluZygiZW4tVVMiLCB7CisgICAgbm90YXRpb246ICJzY2llbnRpZmljIgorfSksIGA5Ljg3N0U4
YCk7CisKK3Nob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAg
ICBub3RhdGlvbjogImVuZ2luZWVyaW5nIgorfSksIGA5ODcuNjU0RTZgKTsKKworc2hvdWxkQmUo
KDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgIG5vdGF0aW9uOiAiY29t
cGFjdCIsCisgICAgY29tcGFjdERpc3BsYXk6ICJsb25nIgorfSksIGA5ODggbWlsbGlvbmApOwor
CitzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgbm90
YXRpb246ICJzY2llbnRpZmljIiwKKyAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgIHN0eWxlOiAidW5pdCIsCisgICAgdW5pdDog
Im1ldGVyLXBlci1zZWNvbmQiCit9KSwgYDMuMDBFOCBtL3NgKTsKKworc2hvdWxkQmUoKDU1KS50
b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgc2lnbkRpc3BsYXk6ICJhbHdheXMiCit9KSwg
YCs1NWApOworCitzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImJuIiwgeworICAgIHN0
eWxlOiAiY3VycmVuY3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBjdXJyZW5jeVNpZ246
ICJhY2NvdW50aW5nIgorfSksIGAo4Ken4Kem4KemLuCnpuCnpuKCrClgKTsKKworc2hvdWxkQmUo
KDAuNTUpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICBzdHlsZTogInBlcmNlbnQiLAor
ICAgIHNpZ25EaXNwbGF5OiAiZXhjZXB0WmVybyIKK30pLCBgKzU1JWApOworCitzaG91bGRCZSgo
MTAwKS50b0xvY2FsZVN0cmluZygiZW4tQ0EiLCB7CisgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisg
ICAgY3VycmVuY3k6ICJVU0QiLAorICAgIGN1cnJlbmN5RGlzcGxheTogIm5hcnJvd1N5bWJvbCIK
K30pLCBgJDEwMC4wMGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCAzMWJi
YzRhMjVjMzRhMWJkNDdhNWYzZjAwMDUzMTc2OTE4YzFlNTYxLi5lZjc0YTU5ZGJjYTFmYTI1MGVj
YzdhNTM1MTNlYWQ5YjZkNDAwMjVmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpA
QCAtNDksMTIgKzQ5LDE1IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0
LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICBzdHlsZTogImRlY2ltYWwiLAog
ICAgICAgICAgICAgY3VycmVuY3k6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGN1cnJlbmN5RGlz
cGxheTogdW5kZWZpbmVkLAorICAgICAgICAgICAgY3VycmVuY3lTaWduOiB1bmRlZmluZWQsCiAg
ICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSwKICAgICAgICAgICAgIG1pbmltdW1G
cmFjdGlvbkRpZ2l0czogMCwKICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywK
ICAgICAgICAgICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAg
ICAgICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1
c2VHcm91cGluZzogdHJ1ZQorICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRydWUsCisgICAgICAg
ICAgICBub3RhdGlvbjogInN0YW5kYXJkIiwKKyAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0
byIKICAgICAgICAgfTsKICAgICAgICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9ucywgZGlm
ZmVyZW5jZSk7CiAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkZWZhdWx0T3B0aW9ucyk7
CkBAIC0xMjQsMTEgKzEyNywxMSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywgeyBnZXQgc3R5bGUoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0pLCBF
cnJvcik7CiAKIC8vIFRoZSBvcHRpb24gY3VycmVuY3kgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4K
LXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAn
Y3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVl
KTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VzRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0
cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywg
e3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6ICdlbicsIHN0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJv
bCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0fV0p
LCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2Vu
Jywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ2NMZid9KSwgW3tsb2NhbGU6ICdlbics
IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5
bWJvbCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0
fV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCd9KSwgW3tsb2NhbGU6ICdl
bicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCcsIGN1cnJlbmN5RGlzcGxheTog
J3N5bWJvbCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6
ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxh
eTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGln
aXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVz
dE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnVXNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAn
c3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnfSksIFt7bG9jYWxl
OiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3Bs
YXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRl
c3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ2NMZid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjog
J3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM6IDR9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZv
cm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJ30pLCBbe2xvY2Fs
ZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJywgY3VycmVuY3lEaXNw
bGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJv
dygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVMkJ30pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyd9KSwgUmFuZ2VF
cnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6
ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVMgRG9sbGFyJ30pLCBSYW5nZUVycm9yKTsKQEAgLTEz
Niw5ICsxMzksOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9z
c2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdkZWNpbWFsJywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9j
YWxlOiAnZW4nLCBzdHlsZTogJ2RlY2ltYWwnfV0pLCB0cnVlKTsKIAogLy8gVGhlIG9wdGlvbiBj
dXJyZW5jeURpc3BsYXkgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1i
ZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJy
ZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2Rl
JywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSks
IHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4n
LCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAn
c3ltYm9sJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
VVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAy
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwg
dHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdj
b2RlJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNE
JywgY3VycmVuY3lEaXNwbGF5OiAnY29kZScsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUp
Oworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5
bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9s
J30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywg
Y3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJ30p
LCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3Vy
cmVuY3lEaXNwbGF5OiAnbmFtZScsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZy
YWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwogc2hv
dWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ0NvZGUnfSksIFJhbmdlRXJyb3Ip
Owogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9fSksIEVycm9yKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5O
dW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnZGVjaW1hbCcsIGN1cnJlbmN5RGlzcGxheTogJ2Nv
ZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2RlY2ltYWwnfV0pLCB0cnVlKTsKQEAgLTE3
MiwxMiArMTc1LDEyIEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBw
b3NzaWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyMX0pLCBSYW5nZUVycm9yKTsKIAogLy8g
VGhlIG9wdGlvbiBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgaXMgcHJvY2Vzc2VkIGNvcnJlY3Rs
eS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21p
bmltdW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzOiA2LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIxfV0pLCB0cnVlKTsK
K3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bUZyYWN0aW9u
RGlnaXRzOiB1bmRlZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM6IDYsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogMjF9XSks
IHRydWUpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czogMH0pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+
IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIyfSks
IFJhbmdlRXJyb3IpOwogCiAvLyBUaGUgb3B0aW9uIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyBp
cyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51
bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxl
OiAnZW4nLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZpY2FudERp
Z2l0czogNn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHttYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdl
bicsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM6IHVuZGVmaW5lZCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAxLCBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM6IDZ9XSksIHRydWUpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge21pbmltdW1TaWduaWZpY2FudERpZ2l0czogNywgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOiA2fSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMH0pLCBSYW5nZUVycm9y
KTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHM6IDIyfSksIFJhbmdlRXJyb3IpOwpAQCAtNDM1LDcgKzQzOCw3IEBAIGZ1
bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2Vz
KSB7CiB7CiAgICAgbGV0IG9wdGlvbnMgPSBkZWZhdWx0TkZvcm1hdC5yZXNvbHZlZE9wdGlvbnMo
KTsKICAgICBkZWxldGUgb3B0aW9ucy5sb2NhbGU7IAotICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KG9wdGlvbnMpLCAneyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFs
IiwibWluaW11bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4
aW11bUZyYWN0aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZX0nKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgJ3sibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0
eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25E
aWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOnRydWUsIm5v
dGF0aW9uIjoic3RhbmRhcmQiLCJzaWduRGlzcGxheSI6ImF1dG8ifScpOwogfQogCiAvLyBMZWdh
Y3kgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3
OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNmNGUxNjRiOTRkZjEuLjIwZTVlNTM5OWEzYzFhYTk2
N2RlN2E5MGM1ZGI1YTdjNWFjNjY1MzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI4LDcgKzI4LDYg
QEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0
cwogICAgIC0gSW50bC5EaXNwbGF5TmFtZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0g
SW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9EYXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCBmOGI5ZGQ5NmI5ZjdkZThiNzYyNWQ1MDk4Y2Mw
MjAxNDJlYTA1Y2ZhLi4xODEyODM5ZjI1YWUwMmEyYzI4MjlmZjg5NjAyNTViNzE0MTVmYjMyIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNzA0LDkgKzE3MDQsMTE0IEBAIHRlc3Qv
aW50bDQwMi9Mb2NhbGUvbGlrZWx5LXN1YnRhZ3MuanM6CiB0ZXN0L2ludGw0MDIvTG9jYWxlL3By
b3RvdHlwZS9taW5pbWl6ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1hZGRzLWxpa2Vs
eS1zdWJ0YWdzLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgp
IHNob3VsZCBiZSAiZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtl
bsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWlu
aW1pemUoKSBzaG91bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4
wrssIMKrZW7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90
eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLWRlLURFLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1lbi1VUy5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrss
IMKrLeKInsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlm
aWMtamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVl
cmluZy1zY2llbnRpZmljLWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst
4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
LeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0L251bWJlcmluZy1zeXN0ZW1zLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBudW1iZXJpbmdTeXN0ZW06IGFkbG0sIGRpZ2l0OiAwIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzDCuywgwqvwnqWQwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBudW1iZXJpbmdTeXN0ZW06IGFkbG0sIGRpZ2l0OiAwIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzDCuywgwqvwnqWQwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVuY3ktZGUtREUuanM6CisgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wLDAwwqAkwrssIMKrMCww
MMKgJMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrLTAsMDDCoCTCuywgwqswLDAwwqAkwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVu
Y3ktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqygkMC4wMCnCuywgwqskMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAwwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2ln
bkRpc3BsYXktY3VycmVuY3ktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4wMCnCuywgwqskMC4wMMK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7
LCDCqyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVuY3kta28tS1IuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS16
aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
KFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
L3NpZ25EaXNwbGF5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAx
IChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1
ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWVuLVVTLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1l
VmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKr
MMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0L3NpZ25EaXNwbGF5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4w
MDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8p
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRs
NDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWtvLUtSLmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBT
YW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrss
IMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUv
Zm9ybWF0L3NpZ25EaXNwbGF5LXJvdW5kaW5nLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqsrMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyswwrssIMKrMMK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3Np
Z25EaXNwbGF5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChl
eGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3VuaXQtamEtSlAuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq+aZgumAny05ODfjgq3jg63jg6Hjg7zj
g4jjg6vCuywgwqvmmYLpgJ8gLTk4NyDjgq3jg63jg6Hjg7zjg4jjg6vCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq+aZgumA
ny05ODfjgq3jg63jg6Hjg7zjg4jjg6vCuywgwqvmmYLpgJ8gLTk4NyDjgq3jg63jg6Hjg7zjg4jj
g6vCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdC91bml0LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUowqstOTg35YWs6YeML+Wwj+aZgsK7LCDCqy05ODcg5YWs6YeML+Wwj+aZgsK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrLTk4N+WFrOmHjC/lsI/mmYLCuywgwqstOTg3IOWFrOmHjC/lsI/mmYLCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMv
ZW5naW5lZXJpbmctc2NpZW50aWZpYy1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0
wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUlu
ZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKr
MsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWVuLVVTLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtamEtSlAuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGgg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1i
ZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1r
by1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJp
bmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1z
Y2llbnRpZmljLXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkg
LSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdp
bmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3Np
Z25EaXNwbGF5LWN1cnJlbmN5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1
bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNcK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3kt
ZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1qYS1KUC5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
NsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3Np
Z25EaXNwbGF5LWN1cnJlbmN5LWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1
bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3kt
emgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqsywrssIMKrMcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
LTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKr
McK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9zaWduRGlzcGxheS1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrss
IMKrMcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAw
MSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9Q
YXJ0cy9zaWduRGlzcGxheS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAu
MDAwMSAoZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhj
ZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9z
aWduRGlzcGxheS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAo
ZXhjZXB0WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBi
ZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVy
byk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlz
cGxheS16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0
WmVybyk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVl
JworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybyk6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqsywrssIMKrMcK7KSB0byBiZSB0cnVlJwordGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy91bml0LWphLUpQLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBT
YW1lVmFsdWUowqs0wrssIMKrNsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzbC
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dFRvUGFydHMvdW5pdC16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZp
bmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzTCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzPCuywgwqs0wrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvUmVsYXRp
dmVUaW1lRm9ybWF0L2NvbnN0cnVjdG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdl
RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402950</attachid>
            <date>2020-06-27 01:08:55 -0700</date>
            <delta_ts>2020-06-27 07:23:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627010854.patch</filename>
            <type>text/plain</type>
            <size>111699</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZmQwNThlODNiODZmNjVmMTAyNTY4Zjcz
ZjIxZTA5YTU5N2JjNzE4Li4wM2VjMjVlYTMxMjJhNTk3Nzk2ZWZmY2Q4MWJiMjVmNWEwNjZjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgdW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIElDVURlbGV0ZXIgZm9yIGNsZWFuZXIgSUNVIG9iamVjdCBkZWxldGlvbi4KKyAg
ICAgICAgQWRkIElDVTo6bWFqb3JWZXJzaW9uIGFuZCBJQ1U6Om1pbm9yVmVyc2lvbiB0byBzd2l0
Y2ggdGhlIHNrZWxldG9uIHN0cmluZyBpbiBJbnRsLk51bWJlckZvcm1hdC4KKyAgICAgICAgQWRk
IG1vcmUgZmVhdHVyZXMgZm9yIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKyAgICAg
ICAgKFdURjo6SUNVRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgw
ZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUz
MjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEw
MDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyog
REZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURB
NjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRB
MURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1
IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkw
MDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJl
Z0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFy
ckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcg
QEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0g
ZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
MkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBm
dGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExT
bmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUEx
IC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90
eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JF
RjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURD
MkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
QEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYx
M2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVu
aWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29u
c3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVy
aWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpv
cGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9y
KQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRs
Q29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxh
dG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1
YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVk
NzA5ZDMwNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJh
c2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDog
dWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAg
IH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47
CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmlu
ZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVl
ZjI4ODllMjVhZjZlYTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYg
QEAgY29uc3RleHByIHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90
IG51bWJlcmluZ1N5c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkg
Y29uc3QKLXsKLSAgICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9y
bWF0KTsKLX0KLQogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1h
dCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0
Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5
ZDI2NzFjODljMjRhMDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2
ODMwNjk5ZWZlNzE5NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzks
OSArODAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdv
RGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3Qg
eyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07Cisg
ICAgdXNpbmcgVURhdGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAog
ICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZl
OTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLmZkNTQ3ZTAzYjFkODYxZWEzOTY0
MzI0ODVhOTBiNjUxZTIwYTNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9y
bWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5
c1sxXSA9IHsgIm51IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBz
dHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJ
bnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRs
TnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAg
ICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJl
KTsKQEAgLTExOSw3ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGln
aXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBv
cGVyYXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQy
MTcgY3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBh
bHBoYWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUg
Y29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4g
Mi4KLSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5p
dHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5z
aWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAg
ICAgICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0
OSwxMzMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJp
bmcmIGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQg
bGlrZSBJQ1U0Si4KK2NsYXNzIE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIg
TWVhc3VyZVVuaXQoQVNDSUlMaXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAg
ICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsg
fQorCisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAg
ICBBU0NJSUxpdGVyYWwgbV9zdWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVV
bml0PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRp
ZmllcikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10g
PSB7CisgICAgICAgIHsgImFyZWEiX3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAg
ICAgeyAidGVtcGVyYXR1cmUiX3MsICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJf
cywgImNlbnRpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwK
KyAgICAgICAgeyAiYW5nbGUiX3MsICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1
cmUiX3MsICJmYWhyZW5oZWl0Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91
bmNlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAi
dm9sdW1lIl9zLCAiZ2FsbG9uIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7
ICJtYXNzIl9zLCAiZ3JhbSJfcyB9LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAiaW5jaCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJf
cywgImtpbG9ncmFtIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9
LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAibWVnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlh
biJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgIm1pbGxpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3Ms
ICJtaWxsaXNlY29uZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJvdW5jZSJfcyB9LAorICAgICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwK
KyAgICAgICAgeyAiZGlnaXRhbCJfcywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJwb3VuZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAor
ICAgICAgICB7ICJtYXNzIl9zLCAic3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywg
InRlcmFiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisg
ICAgICAgIHsgImR1cmF0aW9uIl9zLCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3Ms
ICJ5YXJkIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07
CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBs
ZVVuaXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAg
W10gKGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRp
ZmllcikgeworICAgICAgICAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hh
cmFjdGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFj
dGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0
LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJ
ZGVudGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAh
PSBzdGQ6OmVuZChzaW1wbGVVbml0cykpIHsKKyAgICAgICAgaWYgKCFXVEY6OmNvZGVQb2ludENv
bXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIGl0ZXJhdG9yLT5zdWJUeXBl
KCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVy
Lmxlbmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7CisgICAgfQorICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2NsYXNzIFdlbGxGb3JtZWRVbml0IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IpCisgICAg
ICAgIDogbV9udW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBXZWxsRm9y
bWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0IGRlbm9taW5hdG9yKQor
ICAgICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICAgICAgLCBtX2Rlbm9taW5hdG9y
KGRlbm9taW5hdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBNZWFzdXJlVW5pdCBudW1lcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvcjsgfQorICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBkZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3I7IH0KK3ByaXZhdGU6
CisgICAgTWVhc3VyZVVuaXQgbV9udW1lcmF0b3I7CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+
IG1fZGVub21pbmF0b3I7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZp
ZXIKKyAgICBpZiAoYXV0byB1bml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVu
aXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUo
KSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhh
Y3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
IHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKKyAgICBhdXRvIHBvcyA9IHVuaXRJZGVudGlm
aWVyLmZpbmQocGVyKTsKKyAgICBpZiAocG9zID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50aWZpZXIuZmluZChw
ZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIElmIHRoZSByZXN1bHQgb2Yg
SXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhl
biByZXR1cm4gZmFsc2UuCisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJz
dHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiBy
ZXR1cm4gZmFsc2UuCisgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0
cmluZyhwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gc2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKTsKKyAgICBpZiAoIWRlbm9t
aW5hdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlh
bGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0xOTEsMjAgKzMxNCwyNSBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOwogICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX251bWJlcmluZ1N5
c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9w
dGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3Jt
YXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNp
bWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0
aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIs
ICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2Ug
aWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJp
bmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5Owor
ICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0g
U3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApA
QCAtMjEyLDcgKzM0MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7
CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IGlz
IG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszNTcsMjY4IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRz
KGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIg
fSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwg
b3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5h
cnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwi
Y29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1i
b2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5
U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAi
Y29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5
OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJv
bCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9z
KQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJv
bDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3Mp
CisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93
U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUi
X3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFt
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGlu
ZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2Nv
dW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0
czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1
cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5
U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5
U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWdu
ID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5
RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51
bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICgh
dW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdlbGxGb3JtZWRVbml0
SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9u
ZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwg
b3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9
PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpO
YXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQor
ICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0
ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGln
aXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9ICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/
IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2lu
ZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0
YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAo
bm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2Np
ZW50aWZpYyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAg
ICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYg
KG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNv
bXBhY3REaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJs
b25nIiB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9u
Z1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
dW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJf
cykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7
CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0
ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3Vw
aW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0
WmVybyIgfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIs
IFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJf
cykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2Ug
aWYgKHNpZ25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNp
Z25EaXNwbGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9z
KQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNl
IGlmIChzaWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxh
eSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZv
cm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8v
IENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZv
cm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAor
CisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoICht
X3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0
b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAw
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoICht
X2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1p
c28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNp
ZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6
OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1
aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJv
dGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcigp
OworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG51bWVyYXRvclVuaXQudHlwZSgpLCAn
LScsIG51bWVyYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0
b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IoKSkgeworICAgICAgICAg
ICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBkZW5vbWluYXRvclVuaXRWYWx1ZS52YWx1ZSgpOwor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXItbWVhc3VyZS11
bml0LyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChkZW5vbWluYXRvclVu
aXQudHlwZSgpLCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKCkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13
aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0
RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicg
OiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAq
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyAr
K2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAo
bV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRp
bmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0
aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0
YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dp
dGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNo
b3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0
LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxh
eTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29t
cGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFy
dCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWdu
RGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YXV0byIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNlQWNj
b3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2ln
bi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tl
bGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRs
TnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5J
ZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJp
bmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2Vs
ZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCks
IHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxl
IHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2Ug
U3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksNjUgKzYzNSwxMTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgICAg
IHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYW1lOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5U2lnbikgewor
ICAgICAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVt
YmVyRm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgIGNh
c2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5ldmVyOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIG1fbG9jYWxl
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIHVudW1fc2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9DVVJSRU5DWV9DT0RFLCBTdHJpbmdWaWV3KG1fY3VycmVuY3kpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLCBtX2N1cnJlbmN5Lmxlbmd0aCgpLCAmc3RhdHVzKTsKICAg
ICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
IHsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJE
aWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFD
VElPTl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICB9IGVsc2UgeworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9T
SUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VO
RF9IQUxGVVApOworI2VuZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Zm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9y
bWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzUyLDI1
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1h
dERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERl
Y2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzc4Myw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJj
ZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJl
bmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwpAQCAtMzk2LDYgKzc5Nyw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6
TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0K
QEAgLTQwMyw2ICs4MDYsNzYgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJl
bmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgc3dpdGNoIChu
b3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0
dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICAgICAgcmV0dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdp
bmVlcmluZzoKKyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJfczsKKyAgICBjYXNlIEludGxO
b3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
eworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzoKKyAgICAgICAgcmV0
dXJuICJhY2NvdW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6
CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93
OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25n
OgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKKyAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBj
YXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3Ry
aW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkp
IHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHJldHVybiAibmV2ZXIiX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICByZXR1cm4gImFsd2F5cyJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICByZXR1cm4gImV4
Y2VwdFplcm8iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVj
dCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CkBAIC00MTEsMTkgKzg4NCwzOCBAQCBKU09iamVjdCogSW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJp
bmdTeXN0ZW0pKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7Ci0g
ICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgc3dpdGNoIChtX3N0eWxl
KSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5
RGlzcGxheSkpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lTaWduU3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV91bml0
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuaXREaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdW5pdERpc3BsYXlT
dHJpbmcobV91bml0RGlzcGxheSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRl
Z2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgQVNTRVJUKG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICBicmVhazsKICAgICB9
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CisgICAgaWYg
KG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxh
eVN0cmluZyhtX3NpZ25EaXNwbGF5KSkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQogCkBAIC00
MzIsNyArOTI0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYg
dm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQogICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0
aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZv
cm1hdDo6U3R5bGUgc3R5bGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7
CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC00NDUsMjAgKzkzNywzMSBAQCBzdGF0
aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IGRvdWJsZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuICJmcmFjdGlvbiJfczsKICAgICBjYXNlIFVO
VU1fREVDSU1BTF9TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsK
KyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4
cG9uZW50U2VwYXJhdG9yIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgor
ICAgICAgICByZXR1cm4gImV4cG9uZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CiAgICAgY2Fz
ZSBVTlVNX0dST1VQSU5HX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJncm91cCJf
czsKICAgICBjYXNlIFVOVU1fQ1VSUkVOQ1lfRklFTEQ6CiAgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CiAgICAgY2FzZSBVTlVNX1BFUkNFTlRfRklFTEQ6Ci0gICAgICAgIHJldHVybiAicGVy
Y2VudFNpZ24iX3M7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyAidW5pdCIsIHdlIHNob3Vs
ZCByZXBvcnQgYXMgdW5pdC4KKyAgICAgICAgLy8gSlNUZXN0cy90ZXN0MjYyL3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGVyY2VudC1lbi1VUy5qcwor
ICAgICAgICByZXR1cm4gKHN0eWxlID09IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpVbml0KSA/
ICJ1bml0Il9zIDogInBlcmNlbnRTaWduIl9zOwogICAgIGNhc2UgVU5VTV9TSUdOX0ZJRUxEOgot
ICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWduIl9zIDogInBs
dXNTaWduIl9zOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVO
VU1fTUVBU1VSRV9VTklUX0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2Fz
ZSBVTlVNX0NPTVBBQ1RfRklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRp
ZgogICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdh
eSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCiAgICAgLy8gSWYgdGhl
eSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBz
byBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCiAgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6
Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQ
T05FTlRfU0lHTl9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CiAgICAgLy8g
QW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3Vs
ZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwpAQCAtNDY2LDcgKzk2OSw3IEBAIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAotdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVy
YXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBJbnRsRmllbGRJdGVyYXRvciYgaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmlu
ZyogdW5pdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDc4LDcgKzk4MSwxMiBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibAogICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQsIDMy
PiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOwogICAgIGludDMyX3QgYmVnaW5J
bmRleCA9IDA7CiAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUg
PSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRUeXBl
ID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICB3aGlsZSAoZmllbGRUeXBlID49IDApIHsKICAg
ICAgICAgc2l6ZV90IHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7CiAgICAgICAgIGZvciAo
YXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKQEAgLTQ4Niw3ICs5OTQs
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0u
c2l6ZSA+PSBzaXplKQogICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3Jt
YXRGaWVsZCB7IGZpZWxkVHlwZSwgc2l6ZSB9OwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkVHlw
ZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgZmllbGRUeXBlID0gaXRl
cmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CkBAIC01MDAs
NyArMTAxMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgIGF1dG8gZmllbGRU
eXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJ
bmRleCA8IHN0cmluZ0xlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxk
VHlwZSkKICAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFs
dWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRU
eXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCB2YWx1ZSkpOwogICAgICAgICBhdXRvIHBh
cnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJ
bmRleCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtNTE1LDIwICsxMDI4LDQwIEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25z
dAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0
ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAg
QVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJl
ciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Cisg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9T
dHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZp
ZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmllbGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCkBAIC01MzYsNyArMTA2OSw3IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQz
MDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNj
YzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01B
Sk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIgMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRl
IDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZv
aWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpT
U3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5v
dGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBD
dXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBz
dHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3Bs
YXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9
OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywg
TG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5l
dmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5
bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5
U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5j
eVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBt
X2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3Vy
cmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyAr
MTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07
CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNw
bGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsK
KyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29t
cGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246
OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1f
dXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NWNkYTI1MjdjM2Y2OTljOWY1YTc2
ZDE3MWY1Y2FiZGZhYjJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBK
U09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0
aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmll
bGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50
MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5kZXgsIFVFcnJvckNvZGUmIHN0YXR1cykK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgICAgICByZXR1cm4gdWZp
ZWxkcG9zaXRlcl9uZXh0KG1faXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBtX2l0ZXJhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNj
NTNiOGQ1YTZjMWY1NzZmLi5lOWQzMmEyOGQwY2JkNzlmNjQxM2Y3OTI1ODAxMjA2MTAxNTcyYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVj
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFBsdXJhbFJ1bGVzKSB9OwogCi12b2lkIEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewot
ICAgIGlmIChwbHVyYWxSdWxlcykKLSAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMp
OwotfQotCi12b2lkIEludGxQbHVyYWxSdWxlczo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1i
ZXJGb3JtYXQpCi0gICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0
IFVFbnVtZXJhdGlvbkRlbGV0ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24q
IGVudW1lcmF0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAg
ICAgICAgICAgdWVudW1fY2xvc2UoZW51bWVyYXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51
bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CiAKIEludGxQbHVyYWxS
dWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKQEAgLTEyNSwzNCArMTA4LDggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJp
bmcgPT0gIm9yZGluYWwiID8gVHlwZTo6T3JkaW5hbCA6IFR5cGU6OkNhcmRpbmFsOwogCi0gICAg
dW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsK
LQotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9u
RGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwot
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxP
YmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAx
LCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0g
ICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOwotICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2Fs
ZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNjEsMTQgKzExOCwyMCBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0
cnVlKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZh
bHVlKCkpOwotICAgIH0gZWxzZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0xOTEsMTEgKzE1NCwxOCBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFs
Il9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRp
Z2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFj
dGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMudmFsdWUoKSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3Vu
ZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4
MmEwZTY5M2EwY2JkMDgyYjIyMGYyNTVkODJhZTc0YjcxLi5mYTQzM2RmYTI4YzBhZjMzNTg4YzUx
MmY0MzQ4NGE3NzVlNDBjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC01Myw2ICs1NCw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7
CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0
OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
QEAgLTY2LDEyICs3MCw4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5h
bCwgT3JkaW5hbCB9OwogCi0gICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAg
ICB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1
Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9
IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxl
dGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1
cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZv
cm1hdDsKQEAgLTgwLDggKzgwLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50
bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6
OkNhcmRpbmFsIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdj
M2M4NTQ0YTJiNzQ5ODAzMGY3YzQ2ZTcuLjkwNjJlMmNkODg0Yjg0MjU0ZGM5MGMzMjcxZTY1MjU2
MWU5NWRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNl
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciog
cmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRv
cigpKFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
KSBjb25zdAotewotICAgIGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1
cmVsZGF0ZWZtdF9jbG9zZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShV
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1h
dCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAgICAgfQogCi0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRl
cm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdl
dCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1h
dHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVu
aXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBh
ZTZhNTAyNzBkMTZmODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1YzFjYTNkZGZiYjk5YTIxZDQxM2E2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNs
YXNzIFN0eWxlIDogdWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVj
dCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0
cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRlZm10X2Nsb3NlPjsKKyAgICB1c2lu
ZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGUxMmY0ODE2YzNlMTQ0MjU1YzFhNGY1
MzJhMjg2NzdkZGIzZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3YTZjODc4MDBiNTVhZGM2MDA3MjIw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtMzA3Niw5ICszMDc3LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKEpTR2xvYmFsT2IKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
LSAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87Ci0gICAgdV9nZXRWZXJzaW9uKHZlcnNpb25J
bmZvKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNpb25JbmZvWzBd
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OklDVTo6bWFqb3JW
ZXJzaW9uKCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Bc3NlcnRFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYx
ODI1YTBjZjE2NTdlMTFhYmRiYTguLjg0NTZlMzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNi
MDVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
LDYgKzE4MCw3IEBACiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVy
SlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9Owog
CQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJC
RkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFG
QzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNW
YWx1ZU1hbGxvYy5jcHAgKi87IH07CisJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRB
MEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07
CiAJCUVCNjFFREM3MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5
Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiAr
NzMyLDcgQEAKIAkJRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdl
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUy
MDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQg
LyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1G
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFF
NTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMx
RkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2
Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCi0JCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCAqLywKKwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMg
LyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEg
LyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNh
c3RzLmggKi8sCiAJCQkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vz
cy5oICovLApAQCAtMTQ1Miw2ICsxNDU0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNw
cCAqLywKKwkJCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8s
CiAJCQkJNTJCMjI4QzEyNDU4REM4MjAwNzUzRDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gaWN1OwpAQCAtMTY3Niw2ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAz
OTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVl
TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAv
KiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJ
QTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyog
VHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJE
MzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApA
QCAtMTc2NCw2ICsxNzY3LDcgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhy
ZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTUyMENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENG
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5
ZTVkNWRhMDdjYmFiYTk0ZTk0NjExMDFlMjJkLi5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2Uw
OTUyMDY2ZDBiZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIHVuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKyAgICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAog
KQogCiBzZXQoV1RGX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKaW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3
Ny4uZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwg
ZmluYWwgewogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0K
IAotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0K
IAogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFm
MzhkLi44MzBhYTc0ODkxOTA3ODYwMzIyZjQxN2Q3MThlYTJiY2FmOGQ2NzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBm
aW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0
cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzZmM2UxMGNmNDZmNTk4YjM4ZjFiMDQ5MjY1ZmNjZTdmZTgyYzczMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuaD4KKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdXZlcm51
bS5oPgorCituYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBJQ1UgeworCitzdGF0aWMgY29uc3Qg
VVZlcnNpb25JbmZvJiB2ZXJzaW9uKCkKK3sKKyAgICBzdGF0aWMgVVZlcnNpb25JbmZvIHZlcnNp
b25zIHsgfTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICB1X2dldFZlcnNpb24odmVyc2lvbnMpOwor
ICAgIH0pOworICAgIHJldHVybiB2ZXJzaW9uczsKK30KKwordW5zaWduZWQgbWFqb3JWZXJzaW9u
KCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KDAgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAg
cmV0dXJuIHZlcnNpb24oKVswXTsKK30KKwordW5zaWduZWQgbWlub3JWZXJzaW9uKCkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KDEgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZl
cnNpb24oKVsxXTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXVEY6OklDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oIGIvU291cmNlL1dURi93dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oCmluZGV4IDcyYTk0M2UyNWEyNDliZjUxZjg0NGQ0MGNi
N2QwZjg1YTcyMjI5MTkuLjlmOGQzYWUyNjMyZjViYTFmNDg4ODIzYmFhOWEzYmU4OTc3YTQ0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCkBAIC0xMDcsOCArMTA4LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxsQnVm
ZmVyCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotfQordGVtcGxhdGU8YXV0byBkZWxldGVGdW5j
dGlvbj4KK3N0cnVjdCBJQ1VEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkodHlwZW5hbWUg
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUoZGVsZXRlRnVuY3Rpb24pPjo6dGVtcGxhdGUgQXJndW1l
bnRUeXBlPDA+IHBvaW50ZXIpCisgICAgeworICAgICAgICBpZiAocG9pbnRlcikKKyAgICAgICAg
ICAgIGRlbGV0ZUZ1bmN0aW9uKHBvaW50ZXIpOworICAgIH0KK307CisKK25hbWVzcGFjZSBJQ1Ug
eworCitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbWFqb3JWZXJzaW9uKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdW5zaWduZWQgbWlub3JWZXJzaW9uKCk7CisKK30gLy8gbmFtZXNwYWNlIElD
VQorfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uOwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmc7CiB1c2luZyBX
VEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyOwordXNpbmcgV1RGOjpJQ1VEZWxldGVyOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBh
NjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li43MWI3MmE3Zjk5YjBiYWY4
ZjE2NzY5ZDgyZTA2MDEzNzRhZTlkYWM4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTI3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBs
ZW1lbnQgdW5pZmllZCBJbnRsLk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIHRlc3QyNjIgZmFpbHVyZXMgYXJlIGR1ZSB0byBv
bGQgSUNVIHZlcnNpb24uIE9uY2UgSUNVIGlzIHVwZGF0ZWQsIHRoZXkgd2lsbCBnbyBhd2F5Lgor
CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5q
czoKKyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAgICAoc2hvdWxkQmUudGVzdE51
bWJlckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcu
eWFtbDoKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA2LTI2
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRl
c3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZp
ZWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlN2JkYmM3NmZkNDIyN2QzZWY3NjMyNjQ4YTQ2YzQ1NTBiOWFiNzQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLmpzCkBA
IC0wLDAgKzEsNTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0
cmluZygiZW4tVVMiLCB7CisgICAgc3R5bGU6ICJ1bml0IiwKKyAgICB1bml0OiAibWV0ZXItcGVy
LXNlY29uZCIsCisgICAgdW5pdERpc3BsYXk6ICJzaG9ydCIKK30pLCBgMjk5LDc5Miw0NTggbS9z
YCk7CisKK3Nob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAg
ICBub3RhdGlvbjogInNjaWVudGlmaWMiCit9KSwgYDkuODc3RThgKTsKKworc2hvdWxkQmUoKDk4
NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgIG5vdGF0aW9uOiAiZW5naW5l
ZXJpbmciCit9KSwgYDk4Ny42NTRFNmApOworCitzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2Fs
ZVN0cmluZygiZW4tVVMiLCB7CisgICAgbm90YXRpb246ICJjb21wYWN0IiwKKyAgICBjb21wYWN0
RGlzcGxheTogImxvbmciCit9KSwgYDk4OCBtaWxsaW9uYCk7CisKK3Nob3VsZEJlKCgyOTk3OTI0
NTgpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICBub3RhdGlvbjogInNjaWVudGlmaWMi
LAorICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM6IDIsCisgICAgc3R5bGU6ICJ1bml0IiwKKyAgICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIK
K30pLCBgMy4wMEU4IG0vc2ApOworCitzaG91bGRCZSgoNTUpLnRvTG9jYWxlU3RyaW5nKCJlbi1V
UyIsIHsKKyAgICBzaWduRGlzcGxheTogImFsd2F5cyIKK30pLCBgKzU1YCk7CisKK3Nob3VsZEJl
KCgtMTAwKS50b0xvY2FsZVN0cmluZygiYm4iLCB7CisgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisg
ICAgY3VycmVuY3k6ICJFVVIiLAorICAgIGN1cnJlbmN5U2lnbjogImFjY291bnRpbmciCit9KSwg
YCjgp6fgp6bgp6Yu4Kem4Kem4oKsKWApOworCitzaG91bGRCZSgoMC41NSkudG9Mb2NhbGVTdHJp
bmcoImVuLVVTIiwgeworICAgIHN0eWxlOiAicGVyY2VudCIsCisgICAgc2lnbkRpc3BsYXk6ICJl
eGNlcHRaZXJvIgorfSksIGArNTUlYCk7CisKK3Nob3VsZEJlKCgxMDApLnRvTG9jYWxlU3RyaW5n
KCJlbi1DQSIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIlVTRCIs
CisgICAgY3VycmVuY3lEaXNwbGF5OiAibmFycm93U3ltYm9sIgorfSksIGAkMTAwLjAwYCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IDMxYmJjNGEyNWMzNGExYmQ0N2E1ZjNm
MDAwNTMxNzY5MThjMWU1NjEuLmVmNzRhNTlkYmNhMWZhMjUwZWNjN2E1MzUxM2VhZDliNmQ0MDAy
NWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC00OSwxMiArNDksMTUgQEAg
ZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5j
ZXMpIHsKICAgICAgICAgICAgIHN0eWxlOiAiZGVjaW1hbCIsCiAgICAgICAgICAgICBjdXJyZW5j
eTogdW5kZWZpbmVkLAogICAgICAgICAgICAgY3VycmVuY3lEaXNwbGF5OiB1bmRlZmluZWQsCisg
ICAgICAgICAgICBjdXJyZW5jeVNpZ246IHVuZGVmaW5lZCwKICAgICAgICAgICAgIG1pbmltdW1J
bnRlZ2VyRGlnaXRzOiAxLAogICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLAog
ICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLAogICAgICAgICAgICAgbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlCisg
ICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIG5vdGF0aW9uOiAic3Rh
bmRhcmQiLAorICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRvIgogICAgICAgICB9OwogICAg
ICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTEyNCwxMSArMTI3LDEx
IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZl
cmVuY2VzKSB7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7IGdl
dCBzdHlsZSgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSksIEVycm9yKTsKIAogLy8gVGhlIG9w
dGlvbiBjdXJyZW5jeSBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51
bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnVXNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGln
aXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVz
dE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnQ0xGJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9u
RGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxkQmUo
dGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5j
eScsIGN1cnJlbmN5OiAnY0xmJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxk
QmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJy
ZW5jeScsIGN1cnJlbmN5OiAnWFhYJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5j
eScsIGN1cnJlbmN5OiAnWFhYJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZy
YWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hv
dWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdj
dXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJy
ZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVu
Y3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVc0QnfSks
IFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJy
ZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1G
cmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3No
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAn
Y3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJl
bmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnY0xmJ30p
LCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3Vy
cmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1ZSk7Citz
aG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJy
ZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyQnfSksIFJhbmdl
RXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTJ30pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93
KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVu
Y3k6ICdVUyBEb2xsYXInfSksIFJhbmdlRXJyb3IpOwpAQCAtMTM2LDkgKzEzOSw5IEBAIGZ1bmN0
aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7
CiBzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHls
ZTogJ2RlY2ltYWwnLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAn
ZGVjaW1hbCd9XSksIHRydWUpOwogCiAvLyBUaGUgb3B0aW9uIGN1cnJlbmN5RGlzcGxheSBpcyBw
cm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVu
Y3lEaXNwbGF5OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0
ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5
JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxl
OiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3Bs
YXk6ICdzeW1ib2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRp
Z2l0czogMn1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5j
eURpc3BsYXk6ICduYW1lJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZScsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRl
c3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7bG9jYWxlOiAn
ZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6
ICdjb2RlJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6
IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVt
YmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3Vy
cmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxlOiAnZW4n
LCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdz
eW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czog
MiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1i
ZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJy
ZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1l
JywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywg
Y3VycmVuY3lEaXNwbGF5OiAnQ29kZSd9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9
PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
VVNEJywgZ2V0IGN1cnJlbmN5RGlzcGxheSgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH19KSwgRXJy
b3IpOwogc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7
c3R5bGU6ICdkZWNpbWFsJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdl
bicsIHN0eWxlOiAnZGVjaW1hbCd9XSksIHRydWUpOwpAQCAtMTcyLDEyICsxNzUsMTIgQEAgZnVu
Y3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMp
IHsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtRnJh
Y3Rpb25EaWdpdHM6IDIxfSksIFJhbmdlRXJyb3IpOwogCiAvLyBUaGUgb3B0aW9uIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51
bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGln
aXRzOiA2fSksIFt7bG9jYWxlOiAnZW4nLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDYsIG1h
eGltdW1TaWduaWZpY2FudERpZ2l0czogMjF9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRz
OiA2fSksIFt7bG9jYWxlOiAnZW4nLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiB1bmRlZmluZWQsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
czogNiwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJv
dygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRz
OiAwfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge21pbmltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8v
IFRoZSBvcHRpb24gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIGlzIHByb2Nlc3NlZCBjb3JyZWN0
bHkuCi1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0czogMSwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fV0pLCB0cnVlKTsK
K3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGlt
dW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bUZyYWN0aW9u
RGlnaXRzOiB1bmRlZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogNn1dKSwg
dHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11
bVNpZ25pZmljYW50RGlnaXRzOiA3LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgUmFu
Z2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOiAwfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9
KSwgUmFuZ2VFcnJvcik7CkBAIC00MzUsNyArNDM4LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZv
cm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0
aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRp
b25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51
bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRp
Z2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMi
OjMsInVzZUdyb3VwaW5nIjp0cnVlfScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9w
dGlvbnMpLCAneyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFsIiwibWlu
aW11bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4aW11bUZy
YWN0aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZSwibm90YXRpb24iOiJzdGFuZGFyZCIs
InNpZ25EaXNwbGF5IjoiYXV0byJ9Jyk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggYTc5ZjJkYmUzNjE2NmYwYjhlYmI5
OTlkYjg1Y2Y0ZTE2NGI5NGRmMS4uMjBlNWU1Mzk5YTNjMWFhOTY3ZGU3YTkwYzVkYjVhN2M1YWM2
NjUzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjgsNyArMjgsNiBAQCBza2lwOgogICAgIC0gSW50
bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCiAgICAgLSBJbnRsLkRpc3Bs
YXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0Ci0gICAgLSBJbnRsLk51bWJlckZvcm1hdC11
bmlmaWVkCiAgICAgLSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL0RhdGFWaWV3L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90
ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55
YW1sCmluZGV4IGY4YjlkZDk2YjlmN2RlOGI3NjI1ZDUwOThjYzAyMDE0MmVhMDVjZmEuLjE4MTI4
MzlmMjVhZTAyYTJjMjgyOWZmODk2MDI1NWI3MTQxNWZiMzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
dGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwKQEAgLTE3MDQsOSArMTcwNCwxMTQgQEAgdGVzdC9pbnRsNDAyL0xvY2FsZS9saWtl
bHktc3VidGFncy5qczoKIHRlc3QvaW50bDQwMi9Mb2NhbGUvcHJvdG90eXBlL21pbmltaXplL3Jl
bW92aW5nLWxpa2VseS1zdWJ0YWdzLWZpcnN0LWFkZHMtbGlrZWx5LXN1YnRhZ3MuanM6CiAgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6ICJ1bmQiLm1pbmltaXplKCkgc2hvdWxkIGJlICJlbiIgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS12YS1wb3NpeMK7LCDCq2VuwrspIHRvIGJlIHRydWUnCiAg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBiZSAi
ZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVy
aW5nLXNjaWVudGlmaWMtZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3i
iJ7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst
4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1qYS1KUC5qczoKKyAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKI
nsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMta28t
S1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3i
iJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScK
K3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1z
Y2llbnRpZmljLXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrsp
IHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQv
bnVtYmVyaW5nLXN5c3RlbXMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG51bWJlcmlu
Z1N5c3RlbTogYWRsbSwgZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq/CepZDC
uykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG51bWJlcmluZ1N5
c3RlbTogYWRsbSwgZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq/CepZDCuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9z
aWduRGlzcGxheS1jdXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTAsMDDCoCTCuywgwqswLDAwwqAkwrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstMCww
MMKgJMK7LCDCqzAsMDDCoCTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3Jt
YXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1lbi1VUy5qczoKKyAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQw
LjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1q
YS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
KCQwLjAwKcK7LCDCqyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlz
cGxheS1jdXJyZW5jeS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDAp
wrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9w
cm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpoLVRXLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQw
LjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktZGUtREUu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
LTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhj
ZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktamEt
SlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXkta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKr
MMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAo
ZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUn
Cit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXkt
cm91bmRpbmcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqyswwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktemgtVFcuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDC
uywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXQvdW5pdC1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOODiOODq8K7LCDCq+aZgumAnyAt
OTg3IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOOD
iOODq8K7LCDCq+aZgumAnyAtOTg3IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3VuaXQtemgtVFcuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy05ODflhazp
h4wv5bCP5pmCwrssIMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstOTg35YWs6YeML+Ww
j+aZgsK7LCDCqy05ODcg5YWs6YeML+Wwj+aZgsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRp
ZmljLWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdp
bmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmlu
ZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVy
aW5nLXNjaWVudGlmaWMtZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZp
bml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAt
IGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFy
dHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
LUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrss
IMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUv
Zm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWtvLUtSLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtemgtVFcuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3kt
ZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs1wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1lbi1VUy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
NsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3Np
Z25EaXNwbGF5LWN1cnJlbmN5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1
bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3kt
a28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS16aC1UVy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
NsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3Np
Z25EaXNwbGF5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChl
eGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJv
KTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNw
bGF5LWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRa
ZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWph
LUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWtvLUtSLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3Ro
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LXpoLVRXLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3VuaXQtamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqs2
wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6
IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrNsK7KSB0byBiZSB0cnVlJwordGVz
dC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy91bml0LXpoLVRX
LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqszwrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDC
qzTCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3Ry
dWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402953</attachid>
            <date>2020-06-27 07:23:12 -0700</date>
            <delta_ts>2020-06-27 15:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200627072311.patch</filename>
            <type>text/plain</type>
            <size>111915</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTJlMDA5MmVhNGJmODY0ZjBlMWNhYTZiOGU4NmJlNTFjMjA0YTY2Li44MDU1ZTQ3YjJkOGRlYjkz
NDY3ZTk1YzczYjU2OTg4MzQ1M2U3ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0LiBUaGlzIHVwZGF0ZSB3
YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVDTUEtNDAyIHNwZWMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5nIGZlYXR1cmVzIGluIHRo
ZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gQWRkaW5nICJ1bml0
IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5IiwgIm5vdGF0aW9uIiwgYW5k
ICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNhbiBub3cgaGFuZGxlICJ1
bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVyZXMsIHdlIG5lZWQgdG8g
dXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFmdGVyIElDVSA2NCAod2hp
bGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAgY3JpdGljYWwgcGFydCBh
cmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBVTnVtYmVyRm9ybWF0IGJh
c2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwgNjQpIHNpbmNlIFdlYktp
dAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQgb3IgbGF0ZXIsIEludGwu
TnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVyRm9ybWF0dGVyLCBhbmQg
aW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50bC1udW1iZXJmb3JtYXQK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lEaWdpdHMpOgorICAgICAg
ICAoSlNDOjpNZWFzdXJlVW5pdDo6TWVhc3VyZVVuaXQpOgorICAgICAgICAoSlNDOjpNZWFzdXJl
VW5pdDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1lYXN1cmVVbml0OjpzdWJUeXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6c2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6V2VsbEZvcm1lZFVuaXQ6OldlbGxGb3JtZWRVbml0KToKKyAgICAgICAgKEpT
Qzo6V2VsbEZvcm1lZFVuaXQ6Om51bWVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OldlbGxG
b3JtZWRVbml0OjpkZW5vbWluYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6OndlbGxGb3JtZWRV
bml0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cGFydFR5
cGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpJbnRsRmllbGRJdGVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxGaWVsZEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBydW50aW1l
L0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OlVQbHVy
YWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXM6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VUVudW1lcmF0aW9uRGVsZXRlcjo6b3BlcmF0b3Io
KSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
bklDVVZlcnNpb24pOgorCiAyMDIwLTA2LTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBzaG91bGQgaW5p
dGlhbGl6ZSB0aGUgbWFpbiBydW4gbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZmQwNThlODNiODZmNjVmMTAyNTY4Zjcz
ZjIxZTA5YTU5N2JjNzE4Li4wM2VjMjVlYTMxMjJhNTk3Nzk2ZWZmY2Q4MWJiMjVmNWEwNjZjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgdW5pZmllZCBJbnRs
Lk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIElDVURlbGV0ZXIgZm9yIGNsZWFuZXIgSUNVIG9iamVjdCBkZWxldGlvbi4KKyAg
ICAgICAgQWRkIElDVTo6bWFqb3JWZXJzaW9uIGFuZCBJQ1U6Om1pbm9yVmVyc2lvbiB0byBzd2l0
Y2ggdGhlIHNrZWxldG9uIHN0cmluZyBpbiBJbnRsLk51bWJlckZvcm1hdC4KKyAgICAgICAgQWRk
IG1vcmUgZmVhdHVyZXMgZm9yIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAq
IHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaC4KKyAgICAgICAgKFdURjo6SUNVOjp2ZXJzaW9uKToKKyAg
ICAgICAgKFdURjo6SUNVOjptYWpvclZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1pbm9y
VmVyc2lvbik6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaDoKKyAgICAg
ICAgKFdURjo6SUNVRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisKIDIwMjAtMDYtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1sYW5kIHIyNjI4NjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgw
ZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUz
MjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEw
MDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyog
REZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAq
LzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURB
NjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRB
MURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1
IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkw
MDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJl
Z0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJv
dG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFy
ckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcg
QEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0g
ZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
MkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBm
dGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
MjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExT
bmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRB
MURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUEx
IC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90
eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JF
RjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURD
MkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
QEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYx
M2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVu
aWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29u
c3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVy
aWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpv
cGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9y
KQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRs
Q29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxh
dG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1
YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVk
NzA5ZDMwNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJh
c2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDog
dWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JE
ZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAg
IH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47
CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmlu
ZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVl
ZjI4ODllMjVhZjZlYTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYg
QEAgY29uc3RleHByIHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90
IG51bWJlcmluZ1N5c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkg
Y29uc3QKLXsKLSAgICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9y
bWF0KTsKLX0KLQogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1h
dCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0
Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5
ZDI2NzFjODljMjRhMDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2
ODMwNjk5ZWZlNzE5NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzks
OSArODAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdv
RGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3Qg
eyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7
Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07Cisg
ICAgdXNpbmcgVURhdGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAog
ICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZl
OTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLmZkNTQ3ZTAzYjFkODYxZWEzOTY0
MzI0ODVhOTBiNjUxZTIwYTNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0
Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9y
bWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5
c1sxXSA9IHsgIm51IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBz
dHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJ
bnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRs
TnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAg
ICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJl
KTsKQEAgLTExOSw3ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGln
aXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBv
cGVyYXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQy
MTcgY3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBh
bHBoYWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUg
Y29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4g
Mi4KLSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5p
dHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5z
aWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAg
ICAgICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0
OSwxMzMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJp
bmcmIGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQg
bGlrZSBJQ1U0Si4KK2NsYXNzIE1lYXN1cmVVbml0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIg
TWVhc3VyZVVuaXQoQVNDSUlMaXRlcmFsIHR5cGUsIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKQorICAg
ICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3ViVHlwZShzdWJUeXBlKQorICAgIHsg
fQorCisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdWJUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgQVNDSUlMaXRlcmFsIG1fdHlwZTsKKyAg
ICBBU0NJSUxpdGVyYWwgbV9zdWJUeXBlOworfTsKKworc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVV
bml0PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRp
ZmllcikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIE1lYXN1cmVVbml0IHNpbXBsZVVuaXRzW10g
PSB7CisgICAgICAgIHsgImFyZWEiX3MsICJhY3JlIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwi
X3MsICJiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJ5dGUiX3MgfSwKKyAgICAg
ICAgeyAidGVtcGVyYXR1cmUiX3MsICJjZWxzaXVzIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJf
cywgImNlbnRpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJkYXkiX3MgfSwK
KyAgICAgICAgeyAiYW5nbGUiX3MsICJkZWdyZWUiX3MgfSwKKyAgICAgICAgeyAidGVtcGVyYXR1
cmUiX3MsICJmYWhyZW5oZWl0Il9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImZsdWlkLW91
bmNlIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImZvb3QiX3MgfSwKKyAgICAgICAgeyAi
dm9sdW1lIl9zLCAiZ2FsbG9uIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYml0
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJnaWdhYnl0ZSJfcyB9LAorICAgICAgICB7
ICJtYXNzIl9zLCAiZ3JhbSJfcyB9LAorICAgICAgICB7ICJhcmVhIl9zLCAiaGVjdGFyZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImhvdXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAiaW5jaCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2JpdCJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAia2lsb2J5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJf
cywgImtpbG9ncmFtIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgImtpbG9tZXRlciJfcyB9
LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJsaXRlciJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAibWVnYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAibWVnYWJ5dGUiX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWV0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlLXNjYW5kaW5hdmlh
biJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJtaWxsaWxpdGVyIl9zIH0sCisgICAgICAg
IHsgImxlbmd0aCJfcywgIm1pbGxpbWV0ZXIiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3Ms
ICJtaWxsaXNlY29uZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbnV0ZSJfcyB9
LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1vbnRoIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJvdW5jZSJfcyB9LAorICAgICAgICB7ICJjb25jZW50ciJfcywgInBlcmNlbnQiX3MgfSwK
KyAgICAgICAgeyAiZGlnaXRhbCJfcywgInBldGFieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3Mi
X3MsICJwb3VuZCJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgInNlY29uZCJfcyB9LAor
ICAgICAgICB7ICJtYXNzIl9zLCAic3RvbmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywg
InRlcmFiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgInRlcmFieXRlIl9zIH0sCisg
ICAgICAgIHsgImR1cmF0aW9uIl9zLCAid2VlayJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3Ms
ICJ5YXJkIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAieWVhciJfcyB9LAorICAgIH07
CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHNpbXBs
ZVVuaXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0SWRlbnRpZmllciwKKyAgICAgICAg
W10gKGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBjb25zdCBTdHJpbmdWaWV3JiB1bml0SWRlbnRp
ZmllcikgeworICAgICAgICAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmlzOEJpdCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hh
cmFjdGVycygpLCB1bml0LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFj
dGVyczgoKSwgdW5pdElkZW50aWZpZXIubGVuZ3RoKCkpIDwgMDsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6OmNvZGVQb2ludENvbXBhcmUodW5pdC5zdWJUeXBlKCkuY2hhcmFjdGVycygpLCB1bml0
LnN1YlR5cGUoKS5sZW5ndGgoKSwgdW5pdElkZW50aWZpZXIuY2hhcmFjdGVyczE2KCksIHVuaXRJ
ZGVudGlmaWVyLmxlbmd0aCgpKSA8IDA7CisgICAgICAgIH0pOworICAgIGlmIChpdGVyYXRvciAh
PSBzdGQ6OmVuZChzaW1wbGVVbml0cykpIHsKKyAgICAgICAgaWYgKCFXVEY6OmNvZGVQb2ludENv
bXBhcmUoaXRlcmF0b3ItPnN1YlR5cGUoKS5jaGFyYWN0ZXJzKCksIGl0ZXJhdG9yLT5zdWJUeXBl
KCkubGVuZ3RoKCksIHVuaXRJZGVudGlmaWVyLmNoYXJhY3RlcnM4KCksIHVuaXRJZGVudGlmaWVy
Lmxlbmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7CisgICAgfQorICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2NsYXNzIFdlbGxGb3JtZWRVbml0IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IpCisgICAg
ICAgIDogbV9udW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBXZWxsRm9y
bWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0IGRlbm9taW5hdG9yKQor
ICAgICAgICA6IG1fbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICAgICAgLCBtX2Rlbm9taW5hdG9y
KGRlbm9taW5hdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBNZWFzdXJlVW5pdCBudW1lcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvcjsgfQorICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0
PiBkZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3I7IH0KK3ByaXZhdGU6
CisgICAgTWVhc3VyZVVuaXQgbV9udW1lcmF0b3I7CisgICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+
IG1fZGVub21pbmF0b3I7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZp
ZXIKKyAgICBpZiAoYXV0byB1bml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVu
aXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUo
KSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhh
Y3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
IHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKKyAgICBhdXRvIHBvcyA9IHVuaXRJZGVudGlm
aWVyLmZpbmQocGVyKTsKKyAgICBpZiAocG9zID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwb3MyID0gdW5pdElkZW50aWZpZXIuZmluZChw
ZXIsIHBvcyArIHBlci5sZW5ndGgoKSk7CisgICAgaWYgKHBvczIgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIElmIHRoZSByZXN1bHQgb2Yg
SXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhl
biByZXR1cm4gZmFsc2UuCisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJz
dHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiBy
ZXR1cm4gZmFsc2UuCisgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0
cmluZyhwb3MgKyBwZXIubGVuZ3RoKCkpOworICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gc2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKTsKKyAgICBpZiAoIWRlbm9t
aW5hdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlh
bGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0xOTEsMjAgKzMxNCwyNSBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOwogICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX251bWJlcmluZ1N5
c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9w
dGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3Jt
YXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNp
bWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0
aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIs
ICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2Ug
aWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9
PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJp
bmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5Owor
ICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0g
U3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApA
QCAtMjEyLDcgKzM0MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7
CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IGlz
IG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszNTcsMjY4IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRz
KGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIg
fSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwg
b3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5h
cnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwi
Y29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1i
b2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5
U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAi
Y29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5
OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJv
bCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9z
KQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJv
bDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3Mp
CisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93
U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUi
X3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFt
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGlu
ZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2Nv
dW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0
czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1
cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5
U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5
U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWdu
ID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5
RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51
bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICgh
dW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdlbGxGb3JtZWRVbml0
SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9u
ZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwg
b3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGln
aXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0g
VW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9
PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpO
YXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQor
ICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0
ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGln
aXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9ICht
X3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/
IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2lu
ZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0
YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAo
bm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2Np
ZW50aWZpYyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAg
ICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYg
KG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50
bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNv
bXBhY3REaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJs
b25nIiB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9u
Z1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
dW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJf
cykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7
CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0
ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3Vw
aW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0
WmVybyIgfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIs
IFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJf
cykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2Ug
aWYgKHNpZ25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNp
Z25EaXNwbGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9z
KQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNl
IGlmIChzaWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxh
eSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZv
cm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8v
IENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZv
cm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAor
CisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoICht
X3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0
b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAw
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoICht
X2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1p
c28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNp
ZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6
OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1
aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJv
dGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcigp
OworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG51bWVyYXRvclVuaXQudHlwZSgpLCAn
LScsIG51bWVyYXRvclVuaXQuc3ViVHlwZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0
b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IoKSkgeworICAgICAgICAg
ICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBkZW5vbWluYXRvclVuaXRWYWx1ZS52YWx1ZSgpOwor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXItbWVhc3VyZS11
bml0LyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChkZW5vbWluYXRvclVu
aXQudHlwZSgpLCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKCkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13
aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0
RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicg
OiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAq
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyAr
K2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAo
bV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRp
bmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0
aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0
YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZp
YzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dp
dGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNo
b3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0
LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxh
eTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29t
cGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFy
dCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6
QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWdu
RGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YXV0byIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNlQWNj
b3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2ln
bi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tl
bGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRs
TnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5J
ZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJp
bmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2Vs
ZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCks
IHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxl
IHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2Ug
U3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksNjUgKzYzNSwxMTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgICAg
IHN0eWxlID0gVU5VTV9DVVJSRU5DWTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCJfcyk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYW1lOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZX1BMVVJBTDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5U2lnbikgewor
ICAgICAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVt
YmVyRm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9ub3RhdGlvbikgeworICAgIGNhc2UgSW50bE5v
dGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlNjaWVudGlmaWM6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgIGNh
c2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9zaWduRGlzcGxheSkgeworICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5ldmVyOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIG1fbG9jYWxl
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3Jt
YXQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIHVudW1fc2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9DVVJSRU5DWV9DT0RFLCBTdHJpbmdWaWV3KG1fY3VycmVuY3kpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLCBtX2N1cnJlbmN5Lmxlbmd0aCgpLCAmc3RhdHVzKTsKICAg
ICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
IHsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzOgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIG1fbWluaW11bUludGVnZXJE
aWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAg
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9GUkFD
VElPTl9ESUdJVFMsIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICB9IGVsc2UgeworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OgogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9T
SUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRy
aWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VO
RF9IQUxGVVApOworI2VuZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Zm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VS
VChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFs
dWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9y
bWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
bnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzUyLDI1
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1h
dERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERl
Y2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhidWZmZXIpKTsKIH0KIApAQCAtMzg0LDYgKzc4Myw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJwZXJj
ZW50Il9zOwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICByZXR1cm4gImN1cnJl
bmN5Il9zOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwpAQCAtMzk2LDYgKzc5Nyw4IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgICAgIHJldHVybiAiY29kZSJfczsKICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9s
OgogICAgICAgICByZXR1cm4gInN5bWJvbCJfczsKKyAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6
TmFycm93U3ltYm9sOgorICAgICAgICByZXR1cm4gIm5hcnJvd1N5bWJvbCJfczsKICAgICBjYXNl
IEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgcmV0dXJuICJuYW1lIl9zOwogICAgIH0K
QEAgLTQwMyw2ICs4MDYsNzYgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJl
bmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24gbm90YXRpb24pCit7CisgICAgc3dpdGNoIChu
b3RhdGlvbikgeworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0
dXJuICJzdGFuZGFyZCJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICAgICAgcmV0dXJuICJzY2llbnRpZmljIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdp
bmVlcmluZzoKKyAgICAgICAgcmV0dXJuICJlbmdpbmVlcmluZyJfczsKKyAgICBjYXNlIEludGxO
b3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
eworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKKyAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZzoKKyAgICAgICAgcmV0
dXJuICJhY2NvdW50aW5nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHVuaXREaXNwbGF5KSB7CisgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6
CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93
OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpMb25n
OgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQoreworICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKKyAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBj
YXNlIENvbXBhY3REaXNwbGF5OjpMb25nOgorICAgICAgICByZXR1cm4gImxvbmciX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3Ry
aW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQoreworICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkp
IHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CisgICAgICAgIHJldHVybiAibmV2ZXIiX3M7
CisgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgorICAgICAgICByZXR1cm4gImFsd2F5cyJf
czsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICByZXR1cm4gImV4
Y2VwdFplcm8iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVj
dCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CkBAIC00MTEsMTkgKzg4NCwzOCBAQCBKU09iamVjdCogSW50bE51
bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJp
bmdTeXN0ZW0pKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7Ci0g
ICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CisgICAgc3dpdGNoIChtX3N0eWxl
KSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0cmluZyhtX2N1cnJlbmN5
RGlzcGxheSkpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lTaWduU3RyaW5nKG1fY3VycmVuY3lTaWduKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV91bml0
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuaXREaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdW5pdERpc3BsYXlT
dHJpbmcobV91bml0RGlzcGxheSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRl
Z2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKLSAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgQVNTRVJUKG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0
aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICBicmVhazsKICAgICB9
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CisgICAgaWYg
KG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxh
eVN0cmluZyhtX3NpZ25EaXNwbGF5KSkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQogCkBAIC00
MzIsNyArOTI0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYg
dm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQogICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0
aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZv
cm1hdDo6U3R5bGUgc3R5bGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7
CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC00NDUsMjAgKzkzNywzMSBAQCBzdGF0
aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IGRvdWJsZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuICJmcmFjdGlvbiJfczsKICAgICBjYXNlIFVO
VU1fREVDSU1BTF9TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsK
KyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4
cG9uZW50U2VwYXJhdG9yIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgor
ICAgICAgICByZXR1cm4gImV4cG9uZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CiAgICAgY2Fz
ZSBVTlVNX0dST1VQSU5HX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJncm91cCJf
czsKICAgICBjYXNlIFVOVU1fQ1VSUkVOQ1lfRklFTEQ6CiAgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CiAgICAgY2FzZSBVTlVNX1BFUkNFTlRfRklFTEQ6Ci0gICAgICAgIHJldHVybiAicGVy
Y2VudFNpZ24iX3M7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyAidW5pdCIsIHdlIHNob3Vs
ZCByZXBvcnQgYXMgdW5pdC4KKyAgICAgICAgLy8gSlNUZXN0cy90ZXN0MjYyL3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGVyY2VudC1lbi1VUy5qcwor
ICAgICAgICByZXR1cm4gKHN0eWxlID09IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpVbml0KSA/
ICJ1bml0Il9zIDogInBlcmNlbnRTaWduIl9zOwogICAgIGNhc2UgVU5VTV9TSUdOX0ZJRUxEOgot
ICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWduIl9zIDogInBs
dXNTaWduIl9zOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVO
VU1fTUVBU1VSRV9VTklUX0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2Fz
ZSBVTlVNX0NPTVBBQ1RfRklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRp
ZgogICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdh
eSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCiAgICAgLy8gSWYgdGhl
eSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBz
byBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCiAgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6
Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQ
T05FTlRfU0lHTl9GSUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CiAgICAgLy8g
QW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3Vs
ZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwpAQCAtNDY2LDcgKzk2OSw3IEBAIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91Ymxl
IHZhbHVlKQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAotdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVy
YXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBJbnRsRmllbGRJdGVyYXRvciYgaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmlu
ZyogdW5pdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDc4LDcgKzk4MSwxMiBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibAogICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQsIDMy
PiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOwogICAgIGludDMyX3QgYmVnaW5J
bmRleCA9IDA7CiAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUg
PSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRUeXBl
ID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICB3aGlsZSAoZmllbGRUeXBlID49IDApIHsKICAg
ICAgICAgc2l6ZV90IHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7CiAgICAgICAgIGZvciAo
YXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKQEAgLTQ4Niw3ICs5OTQs
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0u
c2l6ZSA+PSBzaXplKQogICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3Jt
YXRGaWVsZCB7IGZpZWxkVHlwZSwgc2l6ZSB9OwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkVHlw
ZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgZmllbGRUeXBlID0gaXRl
cmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CkBAIC01MDAs
NyArMTAxMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgIGF1dG8gZmllbGRU
eXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJ
bmRleCA8IHN0cmluZ0xlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxk
VHlwZSkKICAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFs
dWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRU
eXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCB2YWx1ZSkpOwogICAgICAgICBhdXRvIHBh
cnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJ
bmRleCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtNTE1LDIwICsxMDI4LDQwIEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25z
dAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0
ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAogICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAg
QVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJl
ciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7Cisg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9T
dHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKGZpZWxkSXRyLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZp
ZWxkSXRlcmF0b3IgaXRlcmF0b3IoZmllbGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCkBAIC01MzYsNyArMTA2OSw3IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQz
MDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNj
YzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01B
Sk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIgMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRl
IDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZv
aWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpT
U3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5v
dGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBD
dXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBz
dHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3Bs
YXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9
OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywg
TG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5l
dmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5
bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5
U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5j
eVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBt
X2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3Vy
cmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyAr
MTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07
CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNw
bGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsK
KyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29t
cGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246
OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1f
dXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NWNkYTI1MjdjM2Y2OTljOWY1YTc2
ZDE3MWY1Y2FiZGZhYjJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBK
U09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0
aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmll
bGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50
MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5kZXgsIFVFcnJvckNvZGUmIHN0YXR1cykK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgICAgICByZXR1cm4gdWZp
ZWxkcG9zaXRlcl9uZXh0KG1faXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBtX2l0ZXJhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNj
NTNiOGQ1YTZjMWY1NzZmLi5lOWQzMmEyOGQwY2JkNzlmNjQxM2Y3OTI1ODAxMjA2MTAxNTcyYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKIAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVj
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFBsdXJhbFJ1bGVzKSB9OwogCi12b2lkIEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewot
ICAgIGlmIChwbHVyYWxSdWxlcykKLSAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMp
OwotfQotCi12b2lkIEludGxQbHVyYWxSdWxlczo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1i
ZXJGb3JtYXQpCi0gICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0
IFVFbnVtZXJhdGlvbkRlbGV0ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24q
IGVudW1lcmF0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAg
ICAgICAgICAgdWVudW1fY2xvc2UoZW51bWVyYXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51
bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CiAKIEludGxQbHVyYWxS
dWxlcyogSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKQEAgLTEyNSwzNCArMTA4LDggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJp
bmcgPT0gIm9yZGluYWwiID8gVHlwZTo6T3JkaW5hbCA6IFR5cGU6OkNhcmRpbmFsOwogCi0gICAg
dW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsK
LQotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9u
RGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwot
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxP
YmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAx
LCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0g
ICAgICAgIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOwotICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2Fs
ZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNjEsMTQgKzExOCwyMCBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0
cnVlKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSk7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZh
bHVlKCkpOwotICAgIH0gZWxzZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9TSUdOSUZJQ0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0xOTEsMTEgKzE1NCwxOCBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFs
Il9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRp
Z2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFj
dGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMudmFsdWUoKSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3Vu
ZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4
MmEwZTY5M2EwY2JkMDgyYjIyMGYyNTVkODJhZTc0YjcxLi5mYTQzM2RmYTI4YzBhZjMzNTg4YzUx
MmY0MzQ4NGE3NzVlNDBjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC01Myw2ICs1NCw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7
CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0
OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
QEAgLTY2LDEyICs3MCw4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5h
bCwgT3JkaW5hbCB9OwogCi0gICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAg
ICB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1
Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9
IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxl
dGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1
cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZv
cm1hdDsKQEAgLTgwLDggKzgwLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX21heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50
bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6
OkNhcmRpbmFsIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdj
M2M4NTQ0YTJiNzQ5ODAzMGY3YzQ2ZTcuLjkwNjJlMmNkODg0Yjg0MjU0ZGM5MGMzMjcxZTY1MjU2
MWU5NWRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNl
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciog
cmVsZXZhbnRFeHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRv
cigpKFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
KSBjb25zdAotewotICAgIGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1
cmVsZGF0ZWZtdF9jbG9zZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShV
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1h
dCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAgICAgfQogCi0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRl
cm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdl
dCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1h
dHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVu
aXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBh
ZTZhNTAyNzBkMTZmODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1YzFjYTNkZGZiYjk5YTIxZDQxM2E2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNs
YXNzIFN0eWxlIDogdWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVj
dCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJh
dG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0
cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRlZm10X2Nsb3NlPjsKKyAgICB1c2lu
ZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGUxMmY0ODE2YzNlMTQ0MjU1YzFhNGY1
MzJhMjg2NzdkZGIzZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3YTZjODc4MDBiNTVhZGM2MDA3MjIw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtMzA3Niw5ICszMDc3LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKEpTR2xvYmFsT2IKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsK
LSAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87Ci0gICAgdV9nZXRWZXJzaW9uKHZlcnNpb25J
bmZvKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNpb25JbmZvWzBd
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OklDVTo6bWFqb3JW
ZXJzaW9uKCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Bc3NlcnRFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYx
ODI1YTBjZjE2NTdlMTFhYmRiYTguLjg0NTZlMzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNi
MDVjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
LDYgKzE4MCw3IEBACiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVy
SlNPTi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhENkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9Owog
CQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJC
RkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFG
QzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNW
YWx1ZU1hbGxvYy5jcHAgKi87IH07CisJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQkUwOUE2MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRB
MEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtR
dWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07
CiAJCUVCNjFFREM3MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5
Q0NDMDAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiAr
NzMyLDcgQEAKIAkJRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdl
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUy
MDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQg
LyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1G
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFF
NTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMx
RkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2
Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCi0JCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8q
IFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCAqLywKKwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMg
LyogVHJhbnNsYXRlZFByb2Nlc3MuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEg
LyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNh
c3RzLmggKi8sCiAJCQkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vz
cy5oICovLApAQCAtMTQ1Miw2ICsxNDU0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNw
cCAqLywKKwkJCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8s
CiAJCQkJNTJCMjI4QzEyNDU4REM4MjAwNzUzRDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gaWN1OwpAQCAtMTY3Niw2ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAz
OTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVl
TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAv
KiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJ
QTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyog
VHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJE
MzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApA
QCAtMTc2NCw2ICsxNzY3LDcgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhy
ZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTUyMENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENG
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5
ZTVkNWRhMDdjYmFiYTk0ZTk0NjExMDFlMjJkLi5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2Uw
OTUyMDY2ZDBiZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIHVuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmlj
b2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKyAgICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAog
KQogCiBzZXQoV1RGX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKaW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3
Ny4uZjdhNDc5YTBiYTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwg
ZmluYWwgewogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0K
IAotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnM7IH0KKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0K
IAogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIwZWUxOWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFm
MzhkLi44MzBhYTc0ODkxOTA3ODYwMzIyZjQxN2Q3MThlYTJiY2FmOGQ2NzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4LDYgKzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBm
aW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0
cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzZmM2UxMGNmNDZmNTk4YjM4ZjFiMDQ5MjY1ZmNjZTdmZTgyYzczMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuaD4KKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdXZlcm51
bS5oPgorCituYW1lc3BhY2UgV1RGIHsKK25hbWVzcGFjZSBJQ1UgeworCitzdGF0aWMgY29uc3Qg
VVZlcnNpb25JbmZvJiB2ZXJzaW9uKCkKK3sKKyAgICBzdGF0aWMgVVZlcnNpb25JbmZvIHZlcnNp
b25zIHsgfTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICB1X2dldFZlcnNpb24odmVyc2lvbnMpOwor
ICAgIH0pOworICAgIHJldHVybiB2ZXJzaW9uczsKK30KKwordW5zaWduZWQgbWFqb3JWZXJzaW9u
KCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KDAgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAg
cmV0dXJuIHZlcnNpb24oKVswXTsKK30KKwordW5zaWduZWQgbWlub3JWZXJzaW9uKCkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KDEgPCBVX01BWF9WRVJTSU9OX0xFTkdUSCk7CisgICAgcmV0dXJuIHZl
cnNpb24oKVsxXTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXVEY6OklDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oIGIvU291cmNlL1dURi93dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oCmluZGV4IDcyYTk0M2UyNWEyNDliZjUxZjg0NGQ0MGNi
N2QwZjg1YTcyMjI5MTkuLjlmOGQzYWUyNjMyZjViYTFmNDg4ODIzYmFhOWEzYmU4OTc3YTQ0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCkBAIC0xMDcsOCArMTA4LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxsQnVm
ZmVyCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotfQordGVtcGxhdGU8YXV0byBkZWxldGVGdW5j
dGlvbj4KK3N0cnVjdCBJQ1VEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkodHlwZW5hbWUg
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUoZGVsZXRlRnVuY3Rpb24pPjo6dGVtcGxhdGUgQXJndW1l
bnRUeXBlPDA+IHBvaW50ZXIpCisgICAgeworICAgICAgICBpZiAocG9pbnRlcikKKyAgICAgICAg
ICAgIGRlbGV0ZUZ1bmN0aW9uKHBvaW50ZXIpOworICAgIH0KK307CisKK25hbWVzcGFjZSBJQ1Ug
eworCitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbWFqb3JWZXJzaW9uKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdW5zaWduZWQgbWlub3JWZXJzaW9uKCk7CisKK30gLy8gbmFtZXNwYWNlIElD
VQorfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uOwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmc7CiB1c2luZyBX
VEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyOwordXNpbmcgV1RGOjpJQ1VEZWxldGVyOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBh
NjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li4zM2Y5MDNmY2NkYWYxMDQ3
ODUyOGE0N2VlMmJmODkxMDhlYWNmN2Q5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA2LTI3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBs
ZW1lbnQgdW5pZmllZCBJbnRsLk51bWJlckZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIHRlc3QyNjIgZmFpbHVyZXMgYXJlIGR1ZSB0byBv
bGQgSUNVIHZlcnNpb24uIE9uY2UgSUNVIGlzIHVwZGF0ZWQsIHRoZXkgd2lsbCBnbyBhd2F5Lgor
CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisgICAgICAgICog
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzOgorICAgICAgICAodGVzdE51bWJlckZvcm1hdCk6
CisgICAgICAgIChzaG91bGRCZS50ZXN0TnVtYmVyRm9ybWF0LkludGwuTnVtYmVyRm9ybWF0KToK
KyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorICAgICAgICAqIHRlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWw6CisKIDIwMjAtMDYtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LXVuaWZpZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEyMTE1OGZjN2U2MjUxNGMwNDhkNTQx
NmU0YmViODY3MDc4MzAwYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXVuaWZpZWQuanMKQEAgLTAsMCArMSw1NCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2lmICgk
dm0uaWN1VmVyc2lvbigpID49IDY0KSB7CisgICAgc2hvdWxkQmUoKDI5OTc5MjQ1OCkudG9Mb2Nh
bGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBzdHlsZTogInVuaXQiLAorICAgICAgICB1bml0
OiAibWV0ZXItcGVyLXNlY29uZCIsCisgICAgICAgIHVuaXREaXNwbGF5OiAic2hvcnQiCisgICAg
fSksIGAyOTksNzkyLDQ1OCBtL3NgKTsKKworICAgIHNob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9j
YWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIgorICAg
IH0pLCBgOS44NzdFOGApOworCisgICAgc2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJp
bmcoImVuLVVTIiwgeworICAgICAgICBub3RhdGlvbjogImVuZ2luZWVyaW5nIgorICAgIH0pLCBg
OTg3LjY1NEU2YCk7CisKKyAgICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygi
ZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9uOiAiY29tcGFjdCIsCisgICAgICAgIGNvbXBhY3RE
aXNwbGF5OiAibG9uZyIKKyAgICB9KSwgYDk4OCBtaWxsaW9uYCk7CisKKyAgICBzaG91bGRCZSgo
Mjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9uOiAi
c2NpZW50aWZpYyIsCisgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBzdHlsZTogInVuaXQiLAorICAgICAg
ICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIKKyAgICB9KSwgYDMuMDBFOCBtL3NgKTsKKworICAg
IHNob3VsZEJlKCg1NSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBzaWduRGlz
cGxheTogImFsd2F5cyIKKyAgICB9KSwgYCs1NWApOworCisgICAgc2hvdWxkQmUoKC0xMDApLnRv
TG9jYWxlU3RyaW5nKCJibiIsIHsKKyAgICAgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgICAg
IGN1cnJlbmN5OiAiRVVSIiwKKyAgICAgICAgY3VycmVuY3lTaWduOiAiYWNjb3VudGluZyIKKyAg
ICB9KSwgYCjgp6fgp6bgp6Yu4Kem4Kem4oKsKWApOworCisgICAgc2hvdWxkQmUoKDAuNTUpLnRv
TG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgc3R5bGU6ICJwZXJjZW50IiwKKyAgICAg
ICAgc2lnbkRpc3BsYXk6ICJleGNlcHRaZXJvIgorICAgIH0pLCBgKzU1JWApOworCisgICAgc2hv
dWxkQmUoKDEwMCkudG9Mb2NhbGVTdHJpbmcoImVuLUNBIiwgeworICAgICAgICBzdHlsZTogImN1
cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJVU0QiLAorICAgICAgICBjdXJyZW5jeURpc3Bs
YXk6ICJuYXJyb3dTeW1ib2wiCisgICAgfSksIGAkMTAwLjAwYCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LmpzCmluZGV4IDMxYmJjNGEyNWMzNGExYmQ0N2E1ZjNmMDAwNTMxNzY5MThj
MWU1NjEuLmVmNzRhNTlkYmNhMWZhMjUwZWNjN2E1MzUxM2VhZDliNmQ0MDAyNWYgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC00OSwxMiArNDksMTUgQEAgZnVuY3Rpb24gdGVz
dE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICAg
ICAgICAgIHN0eWxlOiAiZGVjaW1hbCIsCiAgICAgICAgICAgICBjdXJyZW5jeTogdW5kZWZpbmVk
LAogICAgICAgICAgICAgY3VycmVuY3lEaXNwbGF5OiB1bmRlZmluZWQsCisgICAgICAgICAgICBj
dXJyZW5jeVNpZ246IHVuZGVmaW5lZCwKICAgICAgICAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRz
OiAxLAogICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLAogICAgICAgICAgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLAogICAgICAgICAgICAgbWluaW11bVNpZ25pZmljYW50
RGlnaXRzOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6
IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlCisgICAgICAgICAgICB1
c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIG5vdGF0aW9uOiAic3RhbmRhcmQiLAorICAg
ICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRvIgogICAgICAgICB9OwogICAgICAgICBPYmplY3Qu
YXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04u
c3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTEyNCwxMSArMTI3LDExIEBAIGZ1bmN0aW9u
IHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7IGdldCBzdHlsZSgpIHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0gfSksIEVycm9yKTsKIAogLy8gVGhlIG9wdGlvbiBjdXJyZW5j
eSBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJ30p
LCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3Vy
cmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVXNE
J30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywg
Y3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1h
dChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
Q0xGJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xG
JywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZv
cm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnY0xmJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
Q0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnWFhYJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnWFhYJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51
bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3Rh
bmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czog
Mn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0
KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVc0QnfSksIFt7bG9jYWxlOiAn
ZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6
ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3RO
dW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJy
ZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0
YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDR9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnY0xmJ30pLCBbe2xvY2FsZTog
J2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5
OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0
TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5Jywg
Y3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3Vy
cmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdz
dGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAyfV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyQnfSksIFJhbmdlRXJyb3IpOwogc2hv
dWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ1VTJ30pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyBEb2xs
YXInfSksIFJhbmdlRXJyb3IpOwpAQCAtMTM2LDkgKzEzOSw5IEBAIGZ1bmN0aW9uIHRlc3ROdW1i
ZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRCZSh0
ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2RlY2ltYWwn
LCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnZGVjaW1hbCd9XSks
IHRydWUpOwogCiAvLyBUaGUgb3B0aW9uIGN1cnJlbmN5RGlzcGxheSBpcyBwcm9jZXNzZWQgY29y
cmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4n
LCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAn
Y29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VT
RCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9y
bWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6
ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwg
dHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdu
YW1lJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNE
JywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZScsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJywgY3Vy
cmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1G
cmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KElu
dGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0Qn
LCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJy
ZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50
bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcs
IGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJl
bmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJywgY3VycmVuY3lT
aWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlv
bkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNw
bGF5OiAnQ29kZSd9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgZ2V0IGN1
cnJlbmN5RGlzcGxheSgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH19KSwgRXJyb3IpOwogc2hvdWxk
QmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdkZWNp
bWFsJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAn
ZGVjaW1hbCd9XSksIHRydWUpOwpAQCAtMTcyLDEyICsxNzUsMTIgQEAgZnVuY3Rpb24gdGVzdE51
bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3VsZFRo
cm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDIxfSksIFJhbmdlRXJyb3IpOwogCiAvLyBUaGUgb3B0aW9uIG1pbmltdW1TaWduaWZpY2FudERp
Z2l0cyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7
bG9jYWxlOiAnZW4nLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDYsIG1heGltdW1TaWduaWZp
Y2FudERpZ2l0czogMjF9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9j
YWxlOiAnZW4nLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwgbWF4aW11bUZyYWN0
aW9uRGlnaXRzOiB1bmRlZmluZWQsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogNiwgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAwfSksIFJhbmdl
RXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24g
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91bGRC
ZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
czogMSwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRl
c3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2Fu
dERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB1bmRl
ZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogNn1dKSwgdHJ1ZSk7CiBzaG91
bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50
RGlnaXRzOiA3LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgUmFuZ2VFcnJvcik7CiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOiAwfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJv
cik7CkBAIC00MzUsNyArNDM4LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJG
b3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1
bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsg
Ci0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3Rl
bSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWlu
aW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3Vw
aW5nIjp0cnVlfScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCAneyJu
dW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVnZXJE
aWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGlnaXRz
IjozLCJ1c2VHcm91cGluZyI6dHJ1ZSwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNwbGF5
IjoiYXV0byJ9Jyk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIg
MS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKaW5kZXggYTc5ZjJkYmUzNjE2NmYwYjhlYmI5OTlkYjg1Y2Y0ZTE2
NGI5NGRmMS4uMjBlNWU1Mzk5YTNjMWFhOTY3ZGU3YTkwYzVkYjVhN2M1YWM2NjUzOCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbApAQCAtMjgsNyArMjgsNiBAQCBza2lwOgogICAgIC0gSW50bC5EYXRlVGltZUZv
cm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwogICAg
IC0gSW50bC5MaXN0Rm9ybWF0Ci0gICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCiAgICAg
LSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3
L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NApkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVj
dGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IGY4
YjlkZDk2YjlmN2RlOGI3NjI1ZDUwOThjYzAyMDE0MmVhMDVjZmEuLjE4MTI4MzlmMjVhZTAyYTJj
MjgyOWZmODk2MDI1NWI3MTQxNWZiMzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAg
LTE3MDQsOSArMTcwNCwxMTQgQEAgdGVzdC9pbnRsNDAyL0xvY2FsZS9saWtlbHktc3VidGFncy5q
czoKIHRlc3QvaW50bDQwMi9Mb2NhbGUvcHJvdG90eXBlL21pbmltaXplL3JlbW92aW5nLWxpa2Vs
eS1zdWJ0YWdzLWZpcnN0LWFkZHMtbGlrZWx5LXN1YnRhZ3MuanM6CiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6ICJ1bmQiLm1pbmltaXplKCkgc2hvdWxkIGJlICJlbiIgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrZW4tdS12YS1wb3NpeMK7LCDCq2VuwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBiZSAiZW4iIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBiZSB0cnVlJwordGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlm
aWMtZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVl
cmluZy1zY2llbnRpZmljLWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst
4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
LeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMta28tS1IuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3i
iJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLXpo
LVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst
4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUn
CiB0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvbnVtYmVyaW5nLXN5
c3RlbXMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG51bWJlcmluZ1N5c3RlbTogYWRs
bSwgZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq/CepZDCuykgdG8gYmUgdHJ1
ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG51bWJlcmluZ1N5c3RlbTogYWRsbSwg
ZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq/CepZDCuykgdG8gYmUgdHJ1ZScK
K3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1j
dXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrLTAsMDDCoCTCuywgwqswLDAwwqAkwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstMCwwMMKgJMK7LCDCqzAs
MDDCoCTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBl
L2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAwwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUo
wqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1qYS1KUC5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDC
qyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5j
eS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4w
MMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUo
wqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVt
YmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktZGUtREUuanM6CisgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrsp
IHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQv
c2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEg
KGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVl
JworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktamEtSlAuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqsw
wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXQvc2lnbkRpc3BsYXkta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAw
MDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktcm91bmRpbmcuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyswwrssIMKr
MMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktemgtVFcuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
LTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvdW5p
dC1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKr5pmC6YCfLTk4N+OCreODreODoeODvOODiOODq8K7LCDCq+aZgumAnyAtOTg3IOOCreODreOD
oeODvOODiOODq8K7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOODiOODq8K7LCDCq+aZ
gumAnyAtOTg3IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3VuaXQtemgtVFcuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy05ODflhazph4wv5bCP5pmCwrss
IMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstOTg35YWs6YeML+Wwj+aZgsK7LCDCqy05
ODcg5YWs6YeML+Wwj+aZgsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWRlLURFLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlm
aWMtZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2lu
ZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1
ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5n
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJp
bmctc2NpZW50aWZpYy1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmlu
aXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0g
ZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0
cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAt
SW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywg
wqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtemgtVFcuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3ktZGUtREUuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzbCuywgwqs1wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNcK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9Q
YXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykg
dG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1
cnJlbmN5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3kta28tS1IuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9Q
YXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykg
dG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWRl
LURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWVuLVVTLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3Ro
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWphLUpQLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWtvLUtSLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywg
wqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXRUb1BhcnRzL3VuaXQtamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqs2wrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqs0wrssIMKrNsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy91bml0LXpoLVRXLmpzOgorICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqszwrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
dW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzTCuykgdG8gYmUg
dHJ1ZScKIHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3Ry
dWN0b3IvbG9jYWxlcy12YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3JhbmRm
YXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBHcmFu
ZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>
<flag name="review"
          id="418344"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403033</attachid>
            <date>2020-06-29 01:13:01 -0700</date>
            <delta_ts>2020-06-29 01:13:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209774-20200629011300.patch</filename>
            <type>text/plain</type>
            <size>113028</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi45YjhkY2E4YmZhOWZjZDZi
YjBlMTlhMGFkMzFjZGIyZTk2OWFkYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0
LiBUaGlzIHVwZGF0ZSB3YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVD
TUEtNDAyIHNwZWMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5n
IGZlYXR1cmVzIGluIHRoZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlv
bi4gQWRkaW5nICJ1bml0IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5Iiwg
Im5vdGF0aW9uIiwgYW5kICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNh
biBub3cgaGFuZGxlICJ1bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVy
ZXMsIHdlIG5lZWQgdG8gdXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFm
dGVyIElDVSA2NCAod2hpbGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAg
Y3JpdGljYWwgcGFydCBhcmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBV
TnVtYmVyRm9ybWF0IGJhc2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwg
NjQpIHNpbmNlIFdlYktpdAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQg
b3IgbGF0ZXIsIEludGwuTnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVy
Rm9ybWF0dGVyLCBhbmQgaW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50
bC1udW1iZXJmb3JtYXQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lE
aWdpdHMpOgorICAgICAgICAoSlNDOjpzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAgICAo
SlNDOjp3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
c3R5bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6SW50bEZp
ZWxkSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
UGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBs
dXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVFbnVtZXJhdGlvbkRl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVy
OjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJzaW9uKToKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzE4YWQzODJmOWQ0ODRkMjM2YWMwYzJmYzc1MTUxNjBh
ZTY0ZDNhOC4uNGEwNDYwOThlNTFhODFkZTZhOWU4NzFhNDk4YjM5NTgwNzYxMjBlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJG
b3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
OTc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZCBJQ1VEZWxldGVyIGZvciBjbGVhbmVyIElDVSBvYmplY3QgZGVsZXRp
b24uCisgICAgICAgIEFkZCBJQ1U6Om1ham9yVmVyc2lvbiBhbmQgSUNVOjptaW5vclZlcnNpb24g
dG8gc3dpdGNoIHRoZSBza2VsZXRvbiBzdHJpbmcgaW4gSW50bC5OdW1iZXJGb3JtYXQuCisgICAg
ICAgIEFkZCBtb3JlIGZlYXR1cmVzIGZvciBBU0NJSUxpdGVyYWwuCisKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQVNDSUlMaXRlcmFsLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OmNvZGVQb2ludENvbXBhcmUpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6U3Ry
aW5nVmlldyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oLgorICAgICAgICAoV1RG
OjpJQ1U6OnZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbik6CisgICAg
ICAgIChXVEY6OklDVTo6bWlub3JWZXJzaW9uKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9pY3Uv
SUNVSGVscGVycy5oOgorICAgICAgICAoV1RGOjpJQ1VEZWxldGVyOjpvcGVyYXRvcigpKToKKwog
MjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgwZGE1MDg0M2E2M2Jk
ZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUzMjAxQzFFMUY4RTgy
NEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBT
Y3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyogREZHU25pcHBldFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMy
MkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMy
MkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURBNjQ0QTQwMDZFNzcw
OSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRBMURDMzUwMDY5M0RB
NSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkwMDhFREM5QyAvKiBS
ZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERh
dGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlBMSAvKiBTdHJpbmdQ
cm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5l
cy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkEx
RkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcgQEAKIAkJRTMyMkU1
QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0gZGZnL0RGR1NuaXBw
ZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTQxREE2NDRB
NDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBmdGwvRlRMU25pcHBl
dFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjJFNUE1MURBNjQ0
QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RB
NSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVy
Rm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1OTU2MzIx
RkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1By
b3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90eXBlSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUg
LyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
YXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjcyLDYgKzcyNzQs
NyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
Ki8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAv
KiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBMUQ3OTJGQjFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUEx
MkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKQEAgLTk3NTUsNiAr
OTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0
NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1h
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2
RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYxM2I2OGFlMzBhZTku
LjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29uc3RleHByIHNpemVf
dCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVyaWNJbmRleCA9IDI7
CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVD
b2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9yKQotICAgICAgICB1
Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxDb2xsYXRvciog
Zm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFw
KSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1YmQ2YjczZDEzMDNl
OWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVkNzA5ZDMwNWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtMjYs
OCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgotCi1zdHJ1
Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2luY2x1ZGUgPHd0Zi91
bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03NCw5ICs3
NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJhc2UsIEFjY2VudCwg
Q2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDogdWludDhfdCB7IFVw
cGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JEZWxldGVyIHsKLSAg
ICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAgIH07CisgICAgdXNp
bmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47CiAKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3
Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVlZjI4ODllMjVhZjZl
YTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYgQEAgY29uc3RleHBy
IHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWJlcmluZ1N5
c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0
RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKLXsKLSAg
ICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKLX0KLQog
SW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkg
SW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5ZDI2NzFjODljMjRh
MDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2ODMwNjk5ZWZlNzE5
NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksOSArODAsNyBAQCBj
bGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVy
aWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3QgeyBOb25lLCBTaG9y
dCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZv
aWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVURh
dGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAogICAgIHZvaWQgc2V0
Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2Ri
MmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLmMyZGI1NmVkNTMxOGU3ZmFkODUxNzhmNzA2ZTYyYTVh
YTRhYTExMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZv
cm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0Myw3IEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwg
ewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51
IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51
bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9y
bWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRsTnVtYmVyRm9ybWF0
OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJG
b3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9z
ZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVy
Rm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9y
bWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTExOSw3
ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0
cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3Vy
cmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kg
YW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNv
ZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGlu
ZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6
OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJl
bmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJ
RiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0OSwxMTUgQEAgc3Rh
dGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5
KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4K
K3N0cnVjdCBNZWFzdXJlVW5pdCB7CisgICAgQVNDSUlMaXRlcmFsIHR5cGU7CisgICAgQVNDSUlM
aXRlcmFsIHN1YlR5cGU7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0
aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQorewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAg
ICAgeyAiYXJlYSJfcywgImFjcmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJf
cyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1w
ZXJhdHVyZSJfcywgImNlbHNpdXMiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGlt
ZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7
ICJhbmdsZSJfcywgImRlZ3JlZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZh
aHJlbmhlaXQiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwK
KyAgICAgICAgeyAibGVuZ3RoIl9zLCAiZm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3Ms
ICJnYWxsb24iX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAg
ICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3Ms
ICJncmFtIl9zIH0sCisgICAgICAgIHsgImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAiaG91ciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNo
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsg
ImRpZ2l0YWwiX3MsICJraWxvYnl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dy
YW0iX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAg
IHsgInZvbHVtZSJfcywgImxpdGVyIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdh
Yml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAg
ICB7ICJsZW5ndGgiX3MsICJtZXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxl
Il9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisg
ICAgICAgIHsgInZvbHVtZSJfcywgIm1pbGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsbGltZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vj
b25kIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAibW9udGgiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNl
Il9zIH0sCisgICAgICAgIHsgImNvbmNlbnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7
ICJkaWdpdGFsIl9zLCAicGV0YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5k
Il9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsg
Im1hc3MiX3MsICJzdG9uZSJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJf
cyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAi
ZHVyYXRpb24iX3MsICJ3ZWVrIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3Mg
fSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKworICAgIGF1
dG8gaXRlcmF0b3IgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oc2ltcGxlVW5pdHMpLCBz
dGQ6OmVuZChzaW1wbGVVbml0cyksIHVuaXRJZGVudGlmaWVyLAorICAgICAgICBbXSAoY29uc3Qg
TWVhc3VyZVVuaXQmIHVuaXQsIFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmlldyh1bml0LnN1YlR5cGUp
LCB1bml0SWRlbnRpZmllcikgPCAwOworICAgICAgICB9KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0g
c3RkOjplbmQoc2ltcGxlVW5pdHMpICYmICFXVEY6OmNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmll
dyhpdGVyYXRvci0+c3ViVHlwZSksIHVuaXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuICpp
dGVyYXRvcjsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitzdHJ1Y3QgV2VsbEZvcm1l
ZFVuaXQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0
IG51bWVyYXRvcikKKyAgICAgICAgOiBudW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9
CisKKyAgICBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0
IGRlbm9taW5hdG9yKQorICAgICAgICA6IG51bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwg
ZGVub21pbmF0b3IoZGVub21pbmF0b3IpCisgICAgeworICAgIH0KKworICAgIE1lYXN1cmVVbml0
IG51bWVyYXRvcjsKKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gZGVub21pbmF0b3I7Cit9Owor
CitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmll
cihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZpZXIKKyAgICBpZiAoYXV0byB1bml0
ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVuaXRJZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUoKSk7CisKKyAgICAvLyBJZiB0aGUg
c3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhhY3RseSBvbmNlIGluIHVuaXRJZGVu
dGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIHBlciA9IFN0cmluZ1ZpZXcoIi1w
ZXItIl9zKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOwor
ICAgIGlmIChwb3NpdGlvbiA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICh1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zaXRpb24gKyBwZXIu
bGVuZ3RoKCkpICE9IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKG51bWVyYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gbnVt
ZXJhdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICBhdXRv
IG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9y
KTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBk
ZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZyhwb3NpdGlvbiArIHBlci5sZW5n
dGgoKSk7CisgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElk
ZW50aWZpZXIoZGVub21pbmF0b3IpOworICAgIGlmICghZGVub21pbmF0b3JVbml0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVy
YXRvclVuaXQudmFsdWUoKSwgZGVub21pbmF0b3JVbml0LnZhbHVlKCkpOworfQorCiAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkK
IHsKQEAgLTE5NywxNCArMzAyLDE5IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6
ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBt
X251bWJlcmluZ1N5c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHls
ZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAi
c3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJl
bmN5XCIiLCAiZGVjaW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGlu
dGxPYmplY3QsIG9wdGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1z
ZXRudW1iZXJmb3JtYXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0
eWxlLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxl
IG11c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBv
ciBcInVuaXRcIiIsICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHls
ZVN0cmluZyA9PSAiZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFs
OwotICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChz
dHlsZVN0cmluZyA9PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJj
ZW50OwotICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBp
ZiAoc3R5bGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6
OkN1cnJlbmN5OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAg
ICBtX3N0eWxlID0gU3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIApAQCAtMjEyLDcgKzMyMiw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5
LmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJy
ZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2Rl
Il9zKSk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImN1cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszMzksMjY2IEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1
cnJlbmN5RGlnaXRzKGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNw
bGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1i
b2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwg
XCJzeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5
RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAi
c3ltYm9sIiwgIm5hcnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5h
bWVcIiIsICJzeW1ib2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxh
eVN0cmluZyA9PSAiY29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3Vy
cmVuY3lEaXNwbGF5OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJp
bmcgPT0gInN5bWJvbCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9
PSAic3ltYm9sIl9zKQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURp
c3BsYXk6OlN5bWJvbDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09
ICJuYW1lIikKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJy
b3dTeW1ib2wiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlz
cGxheTo6TmFycm93U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJp
bmcgPT0gIm5hbWUiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5
RGlzcGxheTo6TmFtZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRs
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3Vy
cmVuY3lTaWduU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQi
LCAiYWNjb3VudGluZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIgb3IgXCJhY2NvdW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVt
SW50ZWdlckRpZ2l0czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAg
ICAgICAgaWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAg
ICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2Ug
aWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1f
Y3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5
KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5p
dCIpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0
OworICAgIGlmICghdW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5p
dCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1
bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRs
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9uZyIgfSwgInVuaXREaXNwbGF5
IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiLCAic2hv
cnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChtX3N0
eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAi
c2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6OlNob3J0
OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAibmFycm93Il9zKQorICAg
ICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpOYXJyb3c7CisgICAgICAgIGVs
c2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV91bml0
RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkKLSAg
ICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFj
dGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7CisgICAgdW5z
aWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5j
eURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/IDAgOiAzOwogCi0gICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25E
aWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlv
biIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2luZWVyaW5nIiwgImNvbXBhY3Qi
IH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wi
LCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0YW5kYXJkIik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobm90YXRpb25TdHJpbmcgPT0g
InN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTdGFuZGFy
ZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2NpZW50aWZpYyJfcykKKyAgICAg
ICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzsKKyAgICBlbHNlIGlmIChu
b3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJ
bnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09
ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpDb21wYWN0
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBKU1ZhbHVl
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIp
KTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBv
cHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9w
dGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNvbXBhY3REaXNwbGF5ID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJsb25nIiB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIx
LCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAg
ICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRz
OwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsK
KyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1f
Y29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYg
KGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxh
eSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGlu
dGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpG
YWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXki
KSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0WmVybyIgfSwgInNpZ25EaXNw
bGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwi
ZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJfcykKKyAgICAgICAgbV9zaWdu
RGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09
ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpOZXZlcjsK
KyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9zKQorICAgICAgICBtX3NpZ25E
aXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9
PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpF
eGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZvcm1hdHRlciBoZXJlLgorCisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8vIENvbnN0cnVjdGluZyBJQ1Ug
TnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZvcm1hdHRlci4KKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAorCisgICAgU3RyaW5nQnVpbGRl
ciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInJv
dW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgY2Fz
ZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0b24gaXMgbmVlZGVkLgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50OgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkg
eworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CisgICAg
ICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNpZnkgdW5pdC13aWR0aC4KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3lt
Ym9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdp
ZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lE
aXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6OlVuaXQ6IHsKKyAgICAgICAg
Ly8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1aXJlZCBvcHRpb246IHRoZSB1
bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0dGVkLgorICAgICAgICAvLyBU
aGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJvdGggdGhlIHR5cGUgYW5kIHRo
ZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4KKyAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgYXV0byBudW1l
cmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcjsKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUsICctJywgbnVtZXJhdG9yVW5pdC5zdWJU
eXBlKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVk
VW5pdC0+ZGVub21pbmF0b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0g
ZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUsICctJywgZGVub21pbmF0b3JV
bml0LnN1YlR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERp
c3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxs
LW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1
L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBp
bnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjpt
YWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVz
ZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNh
bnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
LSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55
dGhpbmcuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7
CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3Rh
dGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dpdGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAg
ICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1h
dF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5j
eVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFydCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAg
Ym9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3Vy
cmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3Np
Z25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0byIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3Bs
YXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBz
aWduLWFsd2F5cyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNl
cHRaZXJvOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
c2lnbi1leGNlcHQtemVybyIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1f
dXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3Jv
dXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2Us
IG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZl
cmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3Jt
YXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRl
ckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxlIHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3
aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksMTUgKzYx
NSw0NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjYXNlIEN1cnJlbmN5RGlz
cGxheTo6U3ltYm9sOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3Vw
cG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxl
ID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIHN3aXRjaCAobV9jdXJyZW5jeVNpZ24pIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWdu
OjpBY2NvdW50aW5nOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1
cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRp
YWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGlu
IHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJk
OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAgY2FzZSBJbnRsTm90YXRpb246
OkNvbXBhY3Q6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25E
aXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZl
cjoKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgY2FzZSBTaWduRGlzcGxheTo6
RXhjZXB0WmVybzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1cmUgaXMg
bm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAt
MzI0LDQwICs2NjksNTggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIW1fbWluaW11bVNpZ25pZmljYW50RGln
aXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRl
Z2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwog
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhf
RlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERp
Z2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwogICAgICAgICB1bnVtX3NldEF0dHJp
YnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRp
bmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNlR3JvdXBpbmcpOwogICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1JPVU5ESU5HX01PREUsIFVOVU1f
Uk9VTkRfSEFMRlVQKTsKKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLWZvcm1hdG51bWJlcgogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgVmVjdG9yPFVD
aGFyLCAzMj4gYnVmZmVyOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBB
U1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3Jt
YXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwg
dmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIG51bWJlci4iX3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwog
ICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0
RG91YmxlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKLQor
I2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTM2OCwxMCArNzMxLDI0IEBAIEpTVmFsdWUgSW50bE51bWJlckZv
cm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1
ZSkKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihz
dHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7Cisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VSVChtX251bWJlckZvcm1h
dHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1h
dHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgdW51bWZf
Zm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcu
bGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRl
ZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIEJpZ0ludC4iX3MpOworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQp
OwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9y
bWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0
aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGEgQmlnSW50LiJfcyk7Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwg
U3RyaW5nKGJ1ZmZlcikpOwogfQogCkBAIC0zODQsNiArNzYxLDggQEAgQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4g
InBlcmNlbnQiX3M7CiAgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAi
Y3VycmVuY3kiX3M7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CkBAIC0zOTYsNiArNzc1LDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1i
ZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lE
aXMKICAgICAgICAgcmV0dXJuICJjb2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpT
eW1ib2w6CiAgICAgICAgIHJldHVybiAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAg
ICAgfQpAQCAtNDAzLDYgKzc4NCw3NiBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6
Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwogICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBzd2l0
Y2ggKG5vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAg
ICByZXR1cm4gInN0YW5kYXJkIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmlj
OgorICAgICAgICByZXR1cm4gInNjaWVudGlmaWMiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OkVuZ2luZWVyaW5nOgorICAgICAgICByZXR1cm4gImVuZ2luZWVyaW5nIl9zOworICAgIGNhc2Ug
SW50bE5vdGF0aW9uOjpDb21wYWN0OgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0
cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQoreworICAgIHN3aXRjaCAoY3VycmVuY3lT
aWduKSB7CisgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4g
InN0YW5kYXJkIl9zOworICAgIGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAg
ICByZXR1cm4gImFjY291bnRpbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5
KQoreworICAgIHN3aXRjaCAodW5pdERpc3BsYXkpIHsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpT
aG9ydDoKKyAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpO
YXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2UgVW5pdERpc3BsYXk6
Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3Bs
YXkgY29tcGFjdERpc3BsYXkpCit7CisgICAgc3dpdGNoIChjb21wYWN0RGlzcGxheSkgeworICAg
IGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOwor
ICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCit7CisgICAgc3dpdGNoIChzaWduRGlz
cGxheSkgeworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0
byJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgcmV0dXJuICJuZXZl
ciJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgICAgIHJldHVybiAiYWx3
YXlzIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgICAgIHJldHVy
biAiZXhjZXB0WmVybyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpT
T2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTQxMSwxOSArODYyLDM4IEBAIEpTT2JqZWN0KiBJ
bnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251
bWJlcmluZ1N5c3RlbSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkp
KTsKLSAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICBzd2l0Y2ggKG1f
c3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgorICAgIGNhc2UgU3R5bGU6OlBlcmNl
bnQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5j
eSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3VycmVuY3kpKTsKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNw
bGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3Vy
cmVuY3lEaXNwbGF5KSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwganNOb250cml2aWFsU3RyaW5nKHZt
LCBjdXJyZW5jeVNpZ25TdHJpbmcobV9jdXJyZW5jeVNpZ24pKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU3R5bGU6OlVuaXQ6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBt
X3VuaXQpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5pdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCB1bml0RGlz
cGxheVN0cmluZyhtX3VuaXREaXNwbGF5KSkpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmlt
dW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwot
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykp
OwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBBU1NFUlQo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUp
IHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNh
bnREaWdpdHM6CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNO
dW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiks
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsKKyAg
ICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNw
bGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9jb21w
YWN0RGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNpZ25E
aXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAK
QEAgLTQzMiw3ICs5MDIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0
KFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCiAgICAgbV9ib3VuZEZvcm1hdC5zZXQo
dm0sIHRoaXMsIGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJp
bmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVt
YmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQogewogICAgIHN3aXRjaCAoZmll
bGQpIHsKICAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKQEAgLTQ0NSwyMCArOTE1LDMxIEBA
IHN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBm
aWVsZCwgZG91YmxlIHZhbHVlKQogICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwogICAgIGNh
c2UgVU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJkZWNpbWFs
Il9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6CisgICAgICAgIHJldHVy
biAiZXhwb25lbnRTZXBhcmF0b3IiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklF
TEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7CisgICAgY2FzZSBVTlVN
X0VYUE9ORU5UX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKICAg
ICBjYXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImdy
b3VwIl9zOwogICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKICAgICAgICAgcmV0dXJuICJj
dXJyZW5jeSJfczsKICAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgcmV0dXJu
ICJwZXJjZW50U2lnbiJfczsKKyAgICAgICAgLy8gSWYgdGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ug
c2hvdWxkIHJlcG9ydCBhcyB1bml0LgorICAgICAgICAvLyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVT
LmpzCisgICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OlVu
aXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7CiAgICAgY2FzZSBVTlVNX1NJR05fRklF
TEQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAibWludXNTaWduIl9zIDogInBsdXNTaWdu
Il9zOworICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KHZhbHVlKSA/ICJtaW51c1NpZ24iX3Mg
OiAicGx1c1NpZ24iX3M7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGNh
c2UgVU5VTV9NRUFTVVJFX1VOSVRfRklFTEQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsKKyAg
ICBjYXNlIFVOVU1fQ09NUEFDVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOwor
I2VuZGlmCiAgICAgLy8gVGhlc2Ugc2hvdWxkIG5vdCBzaG93IHVwIGJlY2F1c2UgdGhlcmUgaXMg
bm8gd2F5IHRvIHNwZWNpZnkgdGhlbSBpbiBOdW1iZXJGb3JtYXQgb3B0aW9ucy4KICAgICAvLyBJ
ZiB0aGV5IGRvLCB0aGV5IGRvbid0IGZpdCB3ZWxsIGludG8gYW55IG9mIGtub3duIHBhcnQgdHlw
ZXMsIHNvIGNvbnNpZGVyIGl0IGFuICJ1bmtub3duIi4KICAgICBjYXNlIFVOVU1fUEVSTUlMTF9G
SUVMRDoKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgotICAgIGNhc2UgVU5V
TV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9GSUVMRDoKICAg
ICAvLyBBbnkgbmV3ZXIgYWRkaXRpb25zIHRvIHRoZSBVTnVtYmVyRm9ybWF0RmllbGRzIGVudW0g
c2hvdWxkIGp1c3QgYmUgY29uc2lkZXJlZCBhbiAidW5rbm93biIgcGFydC4KICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gInVua25vd24iX3M7CkBAIC00NjYsNyArOTQ3LDcgQEAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBk
b3VibGUgdmFsdWUpCiAgICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQogCi12b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yKiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQordm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3R5bGUgc3R5bGUsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBm
b3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpT
U3RyaW5nKiB1bml0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NzgsNyArOTU5LDEyIEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVs
ZCwgMzI+IGZpZWxkcyhzdHJpbmdMZW5ndGgsIGxpdGVyYWxGaWVsZCk7CiAgICAgaW50MzJfdCBi
ZWdpbkluZGV4ID0gMDsKICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKLSAgICBhdXRvIGZpZWxk
VHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRl
eCk7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmaWVs
ZFR5cGUgPSBpdGVyYXRvci5uZXh0KGJlZ2luSW5kZXgsIGVuZEluZGV4LCBzdGF0dXMpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3Ii
X3MpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkg
ewogICAgICAgICBzaXplX3Qgc2l6ZSA9IGVuZEluZGV4IC0gYmVnaW5JbmRleDsKICAgICAgICAg
Zm9yIChhdXRvIGkgPSBiZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7ICsraSkgewpAQCAtNDg2LDcg
Kzk3MiwxMSBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAogICAgICAgICAgICAgaWYgKGZpZWxk
c1tpXS5zaXplID49IHNpemUpCiAgICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJl
ckZvcm1hdEZpZWxkIHsgZmllbGRUeXBlLCBzaXplIH07CiAgICAgICAgIH0KLSAgICAgICAgZmll
bGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZElu
ZGV4KTsKKyAgICAgICAgZmllbGRUeXBlID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJ
bmRleCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJh
dGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAibGl0ZXJhbCJfcyk7CkBAIC01MDAsNyArOTkwLDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmwKICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50
eXBlOwogICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxk
c1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50
SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxk
VHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJl
ckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2YWx1ZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJp
bmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5
bGUsIHZhbHVlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZv
cm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAgICAg
IEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlw
ZSk7CkBAIC01MTUsOCArMTAwNSw2IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCiBKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1h
dCk7Ci0KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC01MjYsOSArMTAxNCwyOCBAQCBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsK
IAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVk
TnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICB1bnVtZl9mb3Jt
YXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIu
Z2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGEgbnVtYmVyLiJfcyk7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJlc3VsdCk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAg
ICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
IGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9y
KCpmaWVsZEl0ci5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7CiAg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91Ymxl
Rm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRJdHIu
Z2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfcyk7CisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsK
KyNlbmRpZgogCiAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsKIApAQCAt
NTM2LDcgKzEwNDMsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmICghcGFydHMp
CiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSk7CiAKLSAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVz
dWx0U3RyaW5nLCBmaWVsZEl0ci5nZXQoKSwgcGFydHMpOworICAgIGZvcm1hdFRvUGFydHNJbnRl
cm5hbChnbG9iYWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGl0ZXJhdG9y
LCBwYXJ0cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHJl
dHVybiBwYXJ0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuaAppbmRleCA0MzA0YjIyYThjNmE1MTFmNzRlMmJkY2IwNTM4OGQ1YjY1YjczNDc2
Li5lZmRhMzllMTczOWQxODljY2M5YzFmYzM2MGI1NzFjNDBlNTFmZWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yOCwxMSAr
MjgsMjggQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVt
Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworI2lmICFkZWZp
bmVkKEhBVkVfSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKy8vIFVOVU1fQ09NUEFDVF9GSUVMRCBh
bmQgVU5VTV9NRUFTVVJFX1VOSVRfRklFTEQgYXJlIGF2YWlsYWJsZSBhZnRlciBJQ1UgNjQuCisj
aWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNjQKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSIDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCisjaW5jbHVkZSA8dW5pY29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNC
b3VuZEZ1bmN0aW9uOwogCitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsg
RnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2Vu
dW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0YW5kYXJkLCBTY2llbnRpZmljLCBF
bmdpbmVlcmluZywgQ29tcGFjdCB9OwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQg
c2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBK
U09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVk
IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKIGNsYXNzIElu
dGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC02NCw3ICs4MSwxNCBAQCBj
bGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5k
Rm9ybWF0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5j
dGlvbiopOwogCi0gICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25J
dGVyYXRvciosIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworICAgIGVudW0g
Y2xhc3MgU3R5bGUgOiB1aW50OF90IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQg
fTsKKworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVj
dCosIFN0eWxlLCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVy
YXRvciYsIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW50bFR5cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGln
aXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVk
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5v
dGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbik7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtNzMsMjIgKzk3LDMzIEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMg
VmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpOwogCi0gICAg
ZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSB9
OwotICAgIGVudW0gY2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJv
bCwgTmFtZSB9OwotCi0gICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKLSAgICAgICAg
dm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKLSAgICB9OworICAgIGVudW0g
Y2xhc3MgQ3VycmVuY3lEaXNwbGF5IDogdWludDhfdCB7IENvZGUsIFN5bWJvbCwgTmFycm93U3lt
Ym9sLCBOYW1lIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3Rh
bmRhcmQsIEFjY291bnRpbmcgfTsKKyAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhf
dCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5
IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6
IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CiAKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgY3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbik7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CisgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CiAKICAg
ICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJG
b3JtYXQ7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIHVzaW5nIFVOdW1i
ZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtZl9jbG9zZT47CisgICAgdXNpbmcg
VUZvcm1hdHRlZE51bWJlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0PjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRl
bGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2Vsc2UKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0
RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+IG1fbnVtYmVyRm9ybWF0OworI2Vu
ZGlmCiAKICAgICBTdHJpbmcgbV9sb2NhbGU7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVt
OwogICAgIFN0cmluZyBtX2N1cnJlbmN5OworICAgIFN0cmluZyBtX3VuaXQ7CiAgICAgdW5zaWdu
ZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0
cyB7IDMgfTsKQEAgLTk2LDcgKzEzMSwxMyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzIHsgMCB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVjaW1hbCB9
OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKKyAgICBDdXJyZW5jeVNp
Z24gbV9jdXJyZW5jeVNpZ247CisgICAgVW5pdERpc3BsYXkgbV91bml0RGlzcGxheTsKKyAgICBD
b21wYWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OworICAgIEludGxOb3RhdGlvbiBtX25vdGF0
aW9uIHsgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OworICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRp
c3BsYXk7CiAgICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIEludGxSb3VuZGlu
Z1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWE4
YTdhZjFjZDIzNTUxZTc0MDExNWI0ODUzMWQwZjZkN2Q4YTdhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApA
QCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDICB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPgordm9pZCBzZXROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5
cGUqIGludGxJbnN0YW5jZSwgSlNPYmplY3QqIG9wdGlvbnMsIHVuc2lnbmVkIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQs
IEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgdW5z
aWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGln
aXRzIiksIDEsIDIxLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworCisgICAgSlNWYWx1ZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdl
dChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rp
b25EaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIEpTVmFsdWUgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGln
aXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBK
U1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERp
Z2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
SlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGln
aXRzOworCisgICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGln
aXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRz
OworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+
bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICAg
ICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVhbERl
ZmF1bHQgPSBzdGQ6Om1heChtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQpOworICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBp
bnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0
c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRz
IiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0FjdHVh
bERlZmF1bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgeworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5k
aW5nOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50bEluc3RhbmNlLT5tX3JvdW5k
aW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgIGludGxJbnN0
YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0OworICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0OworfQorCitjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7Citw
dWJsaWM6CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW50bEZpZWxkSXRlcmF0b3IpOworCisg
ICAgZXhwbGljaXQgSW50bEZpZWxkSXRlcmF0b3IoVUZpZWxkUG9zaXRpb25JdGVyYXRvciYgaXRl
cmF0b3IpCisgICAgICAgIDogbV9pdGVyYXRvcihpdGVyYXRvcikKKyAgICB7CisgICAgfQorCisg
ICAgaW50MzJfdCBuZXh0KGludDMyX3QmIGJlZ2luSW5kZXgsIGludDMyX3QmIGVuZEluZGV4LCBV
RXJyb3JDb2RlJikKKyAgICB7CisgICAgICAgIHJldHVybiB1ZmllbGRwb3NpdGVyX25leHQoJm1f
aXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yJiBtX2l0ZXJhdG9yOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmNwcAppbmRleCBjNDk5YWRhMTlmM2FkNGMyZjgzMGFkYzNjNTNiOGQ1YTZjMWY1NzZmLi5l
OWQzMmEyOGQwY2JkNzlmNjQxM2Y3OTI1ODAxMjA2MTAxNTcyYTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
IAorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgpAQCAtMzUsMjUgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9
OwogCi12b2lkIEludGxQbHVyYWxSdWxlczo6VVBsdXJhbFJ1bGVzRGVsZXRlcjo6b3BlcmF0b3Io
KShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKSBjb25zdAotewotICAgIGlmIChwbHVyYWxSdWxl
cykKLSAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOwotfQotCi12b2lkIEludGxQ
bHVyYWxSdWxlczo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1h
dCogbnVtYmVyRm9ybWF0KSBjb25zdAotewotICAgIGlmIChudW1iZXJGb3JtYXQpCi0gICAgICAg
IHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKLX0KLQotc3RydWN0IFVFbnVtZXJhdGlvbkRlbGV0
ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShVRW51bWVyYXRpb24qIGVudW1lcmF0aW9uKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uKQotICAgICAgICAgICAgdWVudW1fY2xv
c2UoZW51bWVyYXRpb24pOwotICAgIH0KLX07Cit1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0g
SUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CiAKIEludGxQbHVyYWxSdWxlcyogSW50bFBsdXJhbFJ1
bGVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKQEAgLTEyNSwzNCAr
MTA4LDggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJpbmcgPT0gIm9yZGluYWwiID8g
VHlwZTo6T3JkaW5hbCA6IFR5cGU6OkNhcmRpbmFsOwogCi0gICAgdW5zaWduZWQgbWluaW11bUlu
dGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAx
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11
bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKLQotICAgIHVuc2lnbmVkIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVuc2lnbmVkIG1pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0
aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9
IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwotICAgIHVuc2lnbmVkIG1heGlt
dW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwor
ICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlv
bnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBp
bnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1h
eGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGln
aXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIH0KIAogICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fbnVtYmVyRm9ybWF0ID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVt
X29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNjEsMTQgKzExOCwyMCBAQCB2b2lkIEludGxQbHVyYWxS
dWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKLSAgICAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5U
X0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgICAgIHVu
dW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FO
VF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwotICAgIH0gZWxz
ZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRp
Z2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAg
ICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNU
SU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdOSUZJQ0FOVF9ESUdJ
VFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CkBAIC0xOTEsMTEgKzE1NCwxOCBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVz
OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0g
VHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVn
ZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFj
dGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAg
IGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOwot
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25E
aWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZy
YWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCBiMDE1ZmU4MmEwZTY5M2EwY2JkMDgyYjIy
MGYyNTVkODJhZTc0YjcxLi5mYTQzM2RmYTI4YzBhZjMzNTg4YzUxMmY0MzQ4NGE3NzVlNDBjYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMu
aApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vu
dW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2luY2x1ZGUgPHd0Zi91
bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Myw2ICs1
NCw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGxU
eXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRs
Tm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxl
Y3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiBy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTY2LDEyICs3MCw4IEBA
IGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
IAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5hbCB9OwogCi0g
ICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCko
VVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERl
bGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0Owot
ICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBscnVs
ZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxS
dWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKQEAgLTgwLDggKzgw
LDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CiAgICAgdW5z
aWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7
IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAg
ICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkNhcmRpbmFsIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDkxYjFiZmExNDI1ODkxZjdjM2M4NTQ0YTJiNzQ5ODAzMGY3
YzQ2ZTcuLjcyOTQzNGRjZTZhODg3MDAxOTc4NGJmODlkOGQzZjNkYTZiZDJmNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgpAQCAtNDAsMTggKzQwLDYgQEAgbmFtZXNwYWNlIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRJbnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciogcmVsZXZhbnRFeHRlbnNpb25L
ZXlzWzFdID0geyAibnUiIH07CiB9CiAKLXZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VVJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKSBjb25zdAotewotICAgIGlm
IChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQotICAgICAgICB1cmVsZGF0ZWZtdF9jbG9zZShy
ZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKLX0KLQotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9j
bG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
ICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0
dXJlKTsKQEAgLTMwOSw3ICsyOTcsOCBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6
OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgfQogCi0gICAg
ICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3Qs
IGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywganNTdHJp
bmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAgICAgIEludGxGaWVs
ZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoKml0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgSW50bE51bWJl
ckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIGFic1ZhbHVlLCBmb3JtYXR0ZWROdW1iZXIsIGZpZWxk
SXRlcmF0b3IsIHBhcnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5n
KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaAppbmRleCA4NWI4MWZhODM4ZDM1ZWYzM2VlOWMwYWU2YTUwMjcwZDE2Zjg1NWRh
Li5lMjcxODc5ODU5N2NhNzA1NWMxY2EzZGRmYmI5OWEyMWQ0MTNhNjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CkBAIC02OCwxMiArNjgsOCBAQCBjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0IGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBMb25nLCBTaG9ydCwgTmFycm93IH07CiAKLSAgICBzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRp
bWVGb3JtYXR0ZXJEZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVSZWxhdGl2ZURh
dGVUaW1lRm9ybWF0dGVyKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgVU51bWJlckZvcm1h
dERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0
OwotICAgIH07CisgICAgdXNpbmcgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyID0g
SUNVRGVsZXRlcjx1cmVsZGF0ZWZtdF9jbG9zZT47CisgICAgdXNpbmcgVU51bWJlckZvcm1hdERl
bGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBzdHlsZVN0cmluZyhTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcAppbmRleCBlMTJmNDgxNmMzZTE0NDI1NWMxYTRmNTMyYTI4Njc3ZGRiM2QyNTU2
Li5lMjYyMWVkOTRlNTk4NDlhN2E2Yzg3ODAwYjU1YWRjNjAwNzIyMGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5j
bHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9J
Q1VIZWxwZXJzLmg+CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUhlbHBlcnMuaCIKQEAgLTMwNzYsOSArMzA3Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhKU0ds
b2JhbE9iCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSUNV
VmVyc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7Ci0gICAgVVZlcnNpb25JbmZv
IHZlcnNpb25JbmZvOwotICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9uSW5mbyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2ZXJzaW9uSW5mb1swXSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpKSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXNzZXJ0RW5hYmxl
ZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA3MTI2M2I1NzVjNGU0OTBiOTE2MTgyNWEwY2YxNjU3ZTExYWJk
YmE4Li44NDU2ZTMwYmJhZmVkZDY5NzFhZWEwNjNjMDQ5MDE0ZWVjYjA1YzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MCw2ICsxODAsNyBAQAogCQlF
MzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJFMzAw
QTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTM5MkZBMjcyMkU5MkJG
RjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMgLyogUmVz
b3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3RTc2IC8q
IEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICov
OyB9OworCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JFMDlBNjI0QTU4NTQ1
MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0NTUwMDUz
NkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi87
IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYy
NTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjYxRURDNzI0MDlD
Q0MxMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCNjFFREM2MjQwOUNDQzAwMDFFRkUzNiAvKiBT
eXN0ZW1UcmFjaW5nQ29jb2EuY3BwICovOyB9OwpAQCAtNzMxLDYgKzczMiw3IEBACiAJCUUzOTJG
QTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZUNvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFs
dWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1
ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMzMUZDODMw
RTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNC
RTA5QTYyNEE1ODU0NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSUNVSGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0Y3Njkw
MjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9ubW92YWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjczLDggKzEyNzUsOCBAQAogCQkJCTBGNzA3NUYzMUZCRjUzN0EwMDQ4OUFGMCAv
KiBUaW1pbmdTY29wZS5oICovLAogCQkJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55
TFJVQ2FjaGUuaCAqLywKIAkJCQkwRkVENjdCNTFCMjJENEQ4MDA2NkNFMTUgLyogVGlueVB0clNl
dC5oICovLAotCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vz
cy5oICovLAogCQkJCTUyMUNDNkIzMjRBMjc3QzIwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vz
cy5jcHAgKi8sCisJCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8qIFRyYW5zbGF0ZWRQcm9j
ZXNzLmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8s
CiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAogCQkJCUUz
NjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLywKQEAgLTE0NTIs
NiArMTQ1NCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4
QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgKi8sCisJCQkJRTNCRTA5
QTYyNEE1ODU0NTAwOURGMkI0IC8qIElDVUhlbHBlcnMuY3BwICovLAogCQkJCTUyQjIyOEMxMjQ1
OERDODIwMDc1M0Q5MSAvKiBJQ1VIZWxwZXJzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGljdTsK
QEAgLTE2NzYsNiArMTY3OSw3IEBACiAJCQkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdy
ZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIw
MDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCNUI0NEUyMjEz
RDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0JFMDlB
NzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFM0EzMkJDNDFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMkJDRkM0MDFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNzQ3LDcgKzE3NTEsNiBAQAogCQkJCUE1QkExNUY1MTgyNDM0ODAw
MEE4MkU2OSAvKiBTdHJpbmdJbXBsQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZB
NzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTNGMTk5M0UxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTIxQ0M2QjQyNEEyNzgwOTAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQcm9jZXNz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJp
bmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAwRDBENkEx
IC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I3MTUxQTgy
NUIwMDQxMjNGRiAvKiBzdHJ0b2QuY2MgaW4gU291cmNlcyAqLywKQEAgLTE3NjQsNiArMTc2Nyw3
IEBACiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOTAxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwNzVGNTFGQkY1M0NEMDA0
ODlBRjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIxQ0M2QjQyNEEy
NzgwOTAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQTZGMzk1MjBDQ0FDRTkwMEEwM0RDRCAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQ3MWViMjgyMzU0OWU1ZDVkYTA3Y2JhYmE5NGU5
NDYxMTAxZTIyZC4uZDIyMGU2YTg4ODY3ZTFlZjE0MGQwYjBjNDdlMDk1MjA2NmQwYmVkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKQEAgLTQ5OSw2ICs0OTksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAg
ICB1bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcAogCiAgICAgdW5pY29kZS9pY3UvQ29sbGF0b3JJ
Q1UuY3BwCisgICAgdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAKICkKIAogc2V0KFdURl9QUklW
QVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4
IGE5MDhkZjNiZWE2MWZmYzIzZWJkZGIzNDRjNzU2ZmMyYzhlODgyNzcuLmY3YTQ3OWEwYmEwNzFl
ZjA2ODlhMGUxMjMyZmJlYjQ0YTVkMGI2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTQ3LDcgKzQ4LDkgQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZpbmFsIHsKICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCB7IG51bGxwdHIgfTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisgICAgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7
IH0KKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2NoYXJhY3RlcnMpOyB9CisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIHN0cmxlbihtX2NoYXJhY3RlcnMpOyB9CiAKIHByaXZhdGU6CiAgICAg
Y29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKSA6
IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CmluZGV4IGZkNzkzODMwYjk2YTExOWQ4ZDZmZmEwMTUxMzdjOTkzZWQ4ZTcyMzcuLjQxZmM3YTZi
NzlkNWJmYmJmZDAwMzFlMGQ5MjVkNGUxOTQ3MGRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcApAQCAtMzQwLDYgKzM0MCwyMCBAQCBib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKGNv
bnN0IGNoYXIqIHN0cmluZykgY29uc3QKICAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZv
dW5kOwogfQogCitpbnQgY29kZVBvaW50Q29tcGFyZShTdHJpbmdWaWV3IGxocywgU3RyaW5nVmll
dyByaHMpCit7CisgICAgYm9vbCBsaHNJczhCaXQgPSBsaHMuaXM4Qml0KCk7CisgICAgYm9vbCBy
aHNJczhCaXQgPSByaHMuaXM4Qml0KCk7CisgICAgaWYgKGxoc0lzOEJpdCkgeworICAgICAgICBp
ZiAocmhzSXM4Qml0KQorICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLmNo
YXJhY3RlcnM4KCksIGxocy5sZW5ndGgoKSwgcmhzLmNoYXJhY3RlcnM4KCksIHJocy5sZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGxocy5jaGFyYWN0ZXJzOCgpLCBs
aHMubGVuZ3RoKCksIHJocy5jaGFyYWN0ZXJzMTYoKSwgcmhzLmxlbmd0aCgpKTsKKyAgICB9Cisg
ICAgaWYgKHJoc0lzOEJpdCkKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLmNo
YXJhY3RlcnMxNigpLCBsaHMubGVuZ3RoKCksIHJocy5jaGFyYWN0ZXJzOCgpLCByaHMubGVuZ3Ro
KCkpOworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGxocy5jaGFyYWN0ZXJzMTYoKSwgbGhz
Lmxlbmd0aCgpLCByaHMuY2hhcmFjdGVyczE2KCksIHJocy5sZW5ndGgoKSk7Cit9CisKICNpZiBD
SEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291bnQgbWFu
dWFsbHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgaW4g
dGhlIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggOGJkYzhiMGVlMTliMzJj
ZDVmMDZmZmRjMmNhNzdhZTM1YTYxZjM4ZC4uNmMzMjE3OTY1MDdlYzU0ODA5ZTdhYTZiMGU1OGUx
ZjRlZGJjNzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Db252
ZXJzaW9uTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CkBAIC02OCw2ICs2OSw3
IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIFN0cmluZ1ZpZXcoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogICAgIFN0
cmluZ1ZpZXcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgZXhwbGljaXQgU3Ry
aW5nVmlldyhBU0NJSUxpdGVyYWwpOwogCiAgICAgc3RhdGljIFN0cmluZ1ZpZXcgZW1wdHkoKTsK
IApAQCAtMzU2LDYgKzM1OCwxMSBAQCBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgaW5pdGlhbGl6ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CiB9CiAKK2lu
bGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCBzdHJpbmcpCit7CisgICAg
aW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKK30KKwog
aW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKQog
ewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CkBAIC0xMDY2LDYgKzEwNzMsOCBA
QCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmluZ1Zp
ZXcgYikKICAgICByZXR1cm4gZXF1YWwoYSwgYik7CiB9CiAKK1dURl9FWFBPUlRfUFJJVkFURSBp
bnQgY29kZVBvaW50Q29tcGFyZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmYzZTEwY2Y0NmY1OThiMzhmMWIwNDkyNjVm
Y2NlN2ZlODJjNzMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8dW5pY29kZS91dmVybnVtLmg+CisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIElDVSB7
CisKK3N0YXRpYyBjb25zdCBVVmVyc2lvbkluZm8mIHZlcnNpb24oKQoreworICAgIHN0YXRpYyBV
VmVyc2lvbkluZm8gdmVyc2lvbnMgeyB9OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIHVfZ2V0VmVy
c2lvbih2ZXJzaW9ucyk7CisgICAgfSk7CisgICAgcmV0dXJuIHZlcnNpb25zOworfQorCit1bnNp
Z25lZCBtYWpvclZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMCA8IFVfTUFYX1ZFUlNJ
T05fTEVOR1RIKTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzBdOworfQorCit1bnNpZ25lZCBtaW5v
clZlcnNpb24oKQoreworICAgIHN0YXRpY19hc3NlcnQoMSA8IFVfTUFYX1ZFUlNJT05fTEVOR1RI
KTsKKyAgICByZXR1cm4gdmVyc2lvbigpWzFdOworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdURjo6
SUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKaW5kZXggNzJhOTQzZTI1
YTI0OWJmNTFmODQ0ZDQwY2I3ZDBmODVhNzIyMjkxOS4uOWY4ZDNhZTI2MzJmNWJhMWY0ODg4MjNi
YWE5YTNiZTg5NzdhNDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3Uv
SUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMu
aApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHVuaWNvZGUv
dXR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b25UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTEwNyw4ICsxMDgsMjQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSAuLi5Bcmd1bWVudFR5cGVzPiBV
RXJyb3JDb2RlIGNhbGxCdWZmZXIKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi19Cit0ZW1wbGF0
ZTxhdXRvIGRlbGV0ZUZ1bmN0aW9uPgorc3RydWN0IElDVURlbGV0ZXIgeworICAgIHZvaWQgb3Bl
cmF0b3IoKSh0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShkZWxldGVGdW5jdGlvbik+
Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4gcG9pbnRlcikKKyAgICB7CisgICAgICAgIGlmIChw
b2ludGVyKQorICAgICAgICAgICAgZGVsZXRlRnVuY3Rpb24ocG9pbnRlcik7CisgICAgfQorfTsK
KworbmFtZXNwYWNlIElDVSB7CisKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBtYWpvclZl
cnNpb24oKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBtaW5vclZlcnNpb24oKTsKKwor
fSAvLyBuYW1lc3BhY2UgSUNVCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb247CiB1c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNl
Q1N0cmluZzsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXI7Cit1c2luZyBX
VEY6OklDVURlbGV0ZXI7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGE2MzU5N2Y0YTIwZWQ2MWU2NmYyODk4OTg1ZGVmN2Q2NTVmMDljMTku
LjEwNmFkY2Y1YjliOTVkMWUzODA3MDg1ZjJjMzcyMGE5NTAyYjI4YjcgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMjAtMDYtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbRUNNQS00MDJdIEltcGxlbWVudCB1bmlmaWVkIEludGwuTnVtYmVyRm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nIGFuZCBEYXJpbiBBZGxlci4KKworICAgICAgICBB
bGwgdGVzdDI2MiBmYWlsdXJlcyBhcmUgZHVlIHRvIG9sZCBJQ1UgdmVyc2lvbi4gT25jZSBJQ1Ug
aXMgdXBkYXRlZCwgdGhleSB3aWxsIGdvIGF3YXkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtdW5pZmllZC1qYS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtdW5pZmllZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh2bS5p
Y3VWZXJzaW9uKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanM6CisgICAg
ICAgICh0ZXN0TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKHNob3VsZEJlLnRlc3ROdW1iZXJGb3Jt
YXQuSW50bC5OdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6Cisg
ICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMC0wNi0yNiAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC1qYS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODI4OGRmYTBjNjdhNTkyYzBiNDQ1NDdlMTEyOTdlNDAzYzVjZWY4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC1qYS5qcwpA
QCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpIHsK
KyAgICBzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAg
ICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIiwKKyAg
ICAgICAgdW5pdERpc3BsYXk6ICJzaG9ydCIKKyAgICB9KSwgYDI5OSw3OTIsNDU4IG0vc2ApOwor
CisgICAgc2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAg
ICAgICBub3RhdGlvbjogInNjaWVudGlmaWMiCisgICAgfSksIGA5Ljg3N0U4YCk7CisKKyAgICBz
aG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIG5v
dGF0aW9uOiAiZW5naW5lZXJpbmciCisgICAgfSksIGA5ODcuNjU0RTZgKTsKKworICAgIHNob3Vs
ZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAgICAgbm90YXRp
b246ICJjb21wYWN0IiwKKyAgICAgICAgY29tcGFjdERpc3BsYXk6ICJsb25nIgorICAgIH0pLCBg
OS455YSEYCk7CisKKyAgICBzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiamEt
SlAiLCB7CisgICAgICAgIG5vdGF0aW9uOiAic2NpZW50aWZpYyIsCisgICAgICAgIG1pbmltdW1G
cmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAg
ICAgICBzdHlsZTogInVuaXQiLAorICAgICAgICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIKKyAg
ICB9KSwgYDMuMDBFOCBtL3NgKTsKKworICAgIHNob3VsZEJlKCg1NSkudG9Mb2NhbGVTdHJpbmco
ImphLUpQIiwgeworICAgICAgICBzaWduRGlzcGxheTogImFsd2F5cyIKKyAgICB9KSwgYCs1NWAp
OworCisgICAgc2hvdWxkQmUoKC0xMDApLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAg
ICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICAgICAg
Y3VycmVuY3lTaWduOiAiYWNjb3VudGluZyIKKyAgICB9KSwgYCjigqwxMDAuMDApYCk7CisKKyAg
ICBzaG91bGRCZSgoMC41NSkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBzdHls
ZTogInBlcmNlbnQiLAorICAgICAgICBzaWduRGlzcGxheTogImV4Y2VwdFplcm8iCisgICAgfSks
IGArNTUlYCk7CisKKyAgICBzaG91bGRCZSgoMTAwKS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7
CisgICAgICAgIHN0eWxlOiAiY3VycmVuY3kiLAorICAgICAgICBjdXJyZW5jeTogIkpQWSIsCisg
ICAgICAgIGN1cnJlbmN5RGlzcGxheTogIm5hcnJvd1N5bWJvbCIKKyAgICB9KSwgYO+/pTEwMGAp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmll
ZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjEyMTE1OGZjN2U2MjUxNGMwNDhkNTQxNmU0YmViODY3MDc4MzAwYQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQuanMKQEAg
LTAsMCArMSw1NCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY0KSB7Cisg
ICAgc2hvdWxkQmUoKDI5OTc5MjQ1OCkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAg
ICBzdHlsZTogInVuaXQiLAorICAgICAgICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIsCisgICAg
ICAgIHVuaXREaXNwbGF5OiAic2hvcnQiCisgICAgfSksIGAyOTksNzkyLDQ1OCBtL3NgKTsKKwor
ICAgIHNob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAg
ICAgbm90YXRpb246ICJzY2llbnRpZmljIgorICAgIH0pLCBgOS44NzdFOGApOworCisgICAgc2hv
dWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBub3Rh
dGlvbjogImVuZ2luZWVyaW5nIgorICAgIH0pLCBgOTg3LjY1NEU2YCk7CisKKyAgICBzaG91bGRC
ZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9u
OiAiY29tcGFjdCIsCisgICAgICAgIGNvbXBhY3REaXNwbGF5OiAibG9uZyIKKyAgICB9KSwgYDk4
OCBtaWxsaW9uYCk7CisKKyAgICBzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygi
ZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9uOiAic2NpZW50aWZpYyIsCisgICAgICAgIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAor
ICAgICAgICBzdHlsZTogInVuaXQiLAorICAgICAgICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIK
KyAgICB9KSwgYDMuMDBFOCBtL3NgKTsKKworICAgIHNob3VsZEJlKCg1NSkudG9Mb2NhbGVTdHJp
bmcoImVuLVVTIiwgeworICAgICAgICBzaWduRGlzcGxheTogImFsd2F5cyIKKyAgICB9KSwgYCs1
NWApOworCisgICAgc2hvdWxkQmUoKC0xMDApLnRvTG9jYWxlU3RyaW5nKCJibiIsIHsKKyAgICAg
ICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICAgICAg
Y3VycmVuY3lTaWduOiAiYWNjb3VudGluZyIKKyAgICB9KSwgYCjgp6fgp6bgp6Yu4Kem4Kem4oKs
KWApOworCisgICAgc2hvdWxkQmUoKDAuNTUpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAg
ICAgICAgc3R5bGU6ICJwZXJjZW50IiwKKyAgICAgICAgc2lnbkRpc3BsYXk6ICJleGNlcHRaZXJv
IgorICAgIH0pLCBgKzU1JWApOworCisgICAgc2hvdWxkQmUoKDEwMCkudG9Mb2NhbGVTdHJpbmco
ImVuLUNBIiwgeworICAgICAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6
ICJVU0QiLAorICAgICAgICBjdXJyZW5jeURpc3BsYXk6ICJuYXJyb3dTeW1ib2wiCisgICAgfSks
IGAkMTAwLjAwYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IDMxYmJj
NGEyNWMzNGExYmQ0N2E1ZjNmMDAwNTMxNzY5MThjMWU1NjEuLmVmNzRhNTlkYmNhMWZhMjUwZWNj
N2E1MzUxM2VhZDliNmQ0MDAyNWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBA
IC00OSwxMiArNDksMTUgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICAgICAgICAgIHN0eWxlOiAiZGVjaW1hbCIsCiAg
ICAgICAgICAgICBjdXJyZW5jeTogdW5kZWZpbmVkLAogICAgICAgICAgICAgY3VycmVuY3lEaXNw
bGF5OiB1bmRlZmluZWQsCisgICAgICAgICAgICBjdXJyZW5jeVNpZ246IHVuZGVmaW5lZCwKICAg
ICAgICAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiAxLAogICAgICAgICAgICAgbWluaW11bUZy
YWN0aW9uRGlnaXRzOiAwLAogICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLAog
ICAgICAgICAgICAgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCiAgICAgICAg
ICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIHVz
ZUdyb3VwaW5nOiB0cnVlCisgICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAg
ICAgIG5vdGF0aW9uOiAic3RhbmRhcmQiLAorICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRv
IgogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZm
ZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsK
QEAgLTEyNCwxMSArMTI3LDExIEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9y
bWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7IGdldCBzdHlsZSgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSksIEVy
cm9yKTsKIAogLy8gVGhlIG9wdGlvbiBjdXJyZW5jeSBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgot
c2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6
ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdj
dXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUp
Owotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5
bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVXNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6
ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywg
bWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRy
dWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7
c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5
bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9s
JywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSks
IHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4n
LCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnY0xmJ30pLCBbe2xvY2FsZTogJ2VuJywg
c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3lt
Ym9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9
XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJ30pLCBbe2xvY2FsZTogJ2Vu
Jywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnWFhYJywgY3VycmVuY3lEaXNwbGF5OiAn
c3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTog
J2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5
OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0
TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5Jywg
Y3VycmVuY3k6ICdVc0QnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3Vy
cmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdz
dGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6
ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxh
eTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGln
aXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOworc2hvdWxkQmUodGVz
dE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnY0xmJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAn
c3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogNH1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxl
OiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3Bs
YXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKIHNob3VsZFRocm93
KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVu
Y3k6ICdVUyQnfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTJ30pLCBSYW5nZUVy
cm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyBEb2xsYXInfSksIFJhbmdlRXJyb3IpOwpAQCAtMTM2
LDkgKzEzOSw5IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3Nz
aWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2RlY2ltYWwnLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2Nh
bGU6ICdlbicsIHN0eWxlOiAnZGVjaW1hbCd9XSksIHRydWUpOwogCiAvLyBUaGUgb3B0aW9uIGN1
cnJlbmN5RGlzcGxheSBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwg
dHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdz
eW1ib2wnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdV
U0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVy
Rm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVu
Y3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5
bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZScs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0
cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywg
e3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2Nv
ZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0Qn
LCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wn
fSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBj
dXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsK
K3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxl
OiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSks
IFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJy
ZW5jeURpc3BsYXk6ICduYW1lJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91
bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnQ29kZSd9KSwgUmFuZ2VFcnJvcik7
CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJy
ZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgZ2V0IGN1cnJlbmN5RGlzcGxheSgpIHsgdGhyb3cgbmV3
IEVycm9yKCk7IH19KSwgRXJyb3IpOwogc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51
bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdkZWNpbWFsJywgY3VycmVuY3lEaXNwbGF5OiAnY29k
ZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnZGVjaW1hbCd9XSksIHRydWUpOwpAQCAtMTcy
LDEyICsxNzUsMTIgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBv
c3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0
KCdlbicsIHttYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIxfSksIFJhbmdlRXJyb3IpOwogCiAvLyBU
aGUgb3B0aW9uIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5
Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxlOiAnZW4nLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM6IDYsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogMjF9XSksIHRydWUpOwor
c2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11
bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxlOiAnZW4nLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IHVuZGVmaW5lZCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB1bmRlZmluZWQsIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0czogNiwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwg
dHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11
bVNpZ25pZmljYW50RGlnaXRzOiAwfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4g
SW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21pbmltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwg
UmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIGlz
IHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6
ICdlbicsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogMSwgbWF4aW11bVNpZ25pZmljYW50RGln
aXRzOiA2fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2Vu
JywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB1bmRlZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogdW5kZWZpbmVkLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZp
Y2FudERpZ2l0czogNn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZv
cm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA3LCBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHM6IDZ9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAwfSksIFJhbmdlRXJyb3Ip
Owogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWdu
aWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CkBAIC00MzUsNyArNDM4LDcgQEAgZnVu
Y3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMp
IHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygp
OwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
Znkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwi
LCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhp
bXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlfScpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCAneyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5
bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRp
Z2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZSwibm90
YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNwbGF5IjoiYXV0byJ9Jyk7CiB9CiAKIC8vIExlZ2Fj
eSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggYTc5
ZjJkYmUzNjE2NmYwYjhlYmI5OTlkYjg1Y2Y0ZTE2NGI5NGRmMS4uMjBlNWU1Mzk5YTNjMWFhOTY3
ZGU3YTkwYzVkYjVhN2M1YWM2NjUzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjgsNyArMjgsNiBA
QCBza2lwOgogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRz
CiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0Ci0gICAgLSBJ
bnRsLk51bWJlckZvcm1hdC11bmlmaWVkCiAgICAgLSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IGY4YjlkZDk2YjlmN2RlOGI3NjI1ZDUwOThjYzAy
MDE0MmVhMDVjZmEuLjE4MTI4MzlmMjVhZTAyYTJjMjgyOWZmODk2MDI1NWI3MTQxNWZiMzIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE3MDQsOSArMTcwNCwxMTQgQEAgdGVzdC9p
bnRsNDAyL0xvY2FsZS9saWtlbHktc3VidGFncy5qczoKIHRlc3QvaW50bDQwMi9Mb2NhbGUvcHJv
dG90eXBlL21pbmltaXplL3JlbW92aW5nLWxpa2VseS1zdWJ0YWdzLWZpcnN0LWFkZHMtbGlrZWx5
LXN1YnRhZ3MuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6ICJ1bmQiLm1pbmltaXplKCkg
c2hvdWxkIGJlICJlbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS12YS1wb3NpeMK7LCDCq2Vu
wrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5p
bWl6ZSgpIHNob3VsZCBiZSAiZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjC
uywgwqtlbsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtZGUtREUuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLWVuLVVTLmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywg
wqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZp
Yy1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVy
aW5nLXNjaWVudGlmaWMta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3i
iJ7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst
4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXQvbnVtYmVyaW5nLXN5c3RlbXMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IG51bWJlcmluZ1N5c3RlbTogYWRsbSwgZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrMMK7LCDCq/CepZDCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IG51bWJlcmluZ1N5c3RlbTogYWRsbSwgZGlnaXQ6IDAgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrMMK7LCDCq/CepZDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTAsMDDCoCTCuywgwqswLDAw
wqAkwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqstMCwwMMKgJMK7LCDCqzAsMDDCoCTCuykgdG8gYmUgdHJ1ZScKK3Rlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5j
eS1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrKCQwLjAwKcK7LCDCqyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWdu
RGlzcGxheS1jdXJyZW5jeS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrss
IMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90
eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRs
NDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpo
LVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqso
VVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrsp
IHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQv
c2lnbkRpc3BsYXktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEg
KGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVl
JworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqsw
wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXQvc2lnbkRpc3BsYXktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAw
MDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXkta28tS1IuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywg
wqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXQvc2lnbkRpc3BsYXktcm91bmRpbmcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyswwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2ln
bkRpc3BsYXktemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4
Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVt
YmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvdW5pdC1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOOD
iOODq8K7LCDCq+aZgumAnyAtOTg3IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr5pmC6YCf
LTk4N+OCreODreODoeODvOODiOODq8K7LCDCq+aZgumAnyAtOTg3IOOCreODreODoeODvOODiOOD
q8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0L3VuaXQtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy05ODflhazph4wv5bCP5pmCwrssIMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqstOTg35YWs6YeML+Wwj+aZgsK7LCDCqy05ODcg5YWs6YeML+Wwj+aZgsK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9l
bmdpbmVlcmluZy1zY2llbnRpZmljLWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTC
uywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5m
aW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsy
wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1qYS1KUC5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBF
eHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJl
ckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWtv
LUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmlu
ZzogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNj
aWVudGlmaWMtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAt
IGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2lu
ZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2ln
bkRpc3BsYXktY3VycmVuY3ktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs1wrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1l
bi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbC
uywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJlbmN5LWphLUpQLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5k
ZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2ln
bkRpc3BsYXktY3VycmVuY3kta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS16
aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbC
uywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWRlLURFLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzLCuywgwqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAt
MC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsx
wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXRUb1BhcnRzL3NpZ25EaXNwbGF5LWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywg
wqsxwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAx
IChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1Bh
cnRzL3NpZ25EaXNwbGF5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4w
MDAxIChleGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrsp
IHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNl
cHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3Np
Z25EaXNwbGF5LWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChl
eGNlcHRaZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJv
KTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNw
bGF5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRa
ZXJvKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKTogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzLCuywgwqsxwrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3VuaXQtamEtSlAuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzTCuywgwqs2wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrNsK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy91bml0LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmlu
ZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNMK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrM8K7LCDCqzTCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9SZWxhdGl2
ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKICAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403035</attachid>
            <date>2020-06-29 01:21:45 -0700</date>
            <delta_ts>2020-06-29 01:21:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209774-20200629012144.patch</filename>
            <type>text/plain</type>
            <size>113090</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi45YjhkY2E4YmZhOWZjZDZi
YjBlMTlhMGFkMzFjZGIyZTk2OWFkYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0
LiBUaGlzIHVwZGF0ZSB3YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVD
TUEtNDAyIHNwZWMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5n
IGZlYXR1cmVzIGluIHRoZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlv
bi4gQWRkaW5nICJ1bml0IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5Iiwg
Im5vdGF0aW9uIiwgYW5kICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNh
biBub3cgaGFuZGxlICJ1bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVy
ZXMsIHdlIG5lZWQgdG8gdXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFm
dGVyIElDVSA2NCAod2hpbGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAg
Y3JpdGljYWwgcGFydCBhcmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBV
TnVtYmVyRm9ybWF0IGJhc2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwg
NjQpIHNpbmNlIFdlYktpdAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQg
b3IgbGF0ZXIsIEludGwuTnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVy
Rm9ybWF0dGVyLCBhbmQgaW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50
bC1udW1iZXJmb3JtYXQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lE
aWdpdHMpOgorICAgICAgICAoSlNDOjpzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAgICAo
SlNDOjp3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
c3R5bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6SW50bEZp
ZWxkSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
UGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBs
dXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVFbnVtZXJhdGlvbkRl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVy
OjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJzaW9uKToKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzE4YWQzODJmOWQ0ODRkMjM2YWMwYzJmYzc1MTUxNjBh
ZTY0ZDNhOC4uNGEwNDYwOThlNTFhODFkZTZhOWU4NzFhNDk4YjM5NTgwNzYxMjBlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJG
b3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
OTc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZCBJQ1VEZWxldGVyIGZvciBjbGVhbmVyIElDVSBvYmplY3QgZGVsZXRp
b24uCisgICAgICAgIEFkZCBJQ1U6Om1ham9yVmVyc2lvbiBhbmQgSUNVOjptaW5vclZlcnNpb24g
dG8gc3dpdGNoIHRoZSBza2VsZXRvbiBzdHJpbmcgaW4gSW50bC5OdW1iZXJGb3JtYXQuCisgICAg
ICAgIEFkZCBtb3JlIGZlYXR1cmVzIGZvciBBU0NJSUxpdGVyYWwuCisKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQVNDSUlMaXRlcmFsLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OmNvZGVQb2ludENvbXBhcmUpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6U3Ry
aW5nVmlldyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oLgorICAgICAgICAoV1RG
OjpJQ1U6OnZlcnNpb24pOgorICAgICAgICAoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbik6CisgICAg
ICAgIChXVEY6OklDVTo6bWlub3JWZXJzaW9uKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9pY3Uv
SUNVSGVscGVycy5oOgorICAgICAgICAoV1RGOjpJQ1VEZWxldGVyOjpvcGVyYXRvcigpKToKKwog
MjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgwZGE1MDg0M2E2M2Jk
ZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1MjgwYWEzZTBhY2NmMWEzOTdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODksNiArMTc4OSw3IEBACiAJCUUzMjAxQzFFMUY4RTgy
NEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBT
Y3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFEQTY0NDM5MDA2RTc3MDkgLyogREZHU25pcHBldFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMy
MkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMy
MkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUE1MURBNjQ0QTQwMDZFNzcw
OSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjMxMTY5MjRBMURDMzUwMDY5M0RB
NSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmggKi87IH07CiAJCUUzMjU5NTY0MjFGREEyQzkwMDhFREM5QyAvKiBS
ZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERh
dGFJbmxpbmVzLmggKi87IH07CiAJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlBMSAvKiBTdHJpbmdQ
cm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzI1QTM1RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5l
cy5oICovOyB9OwogCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkEx
RkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0NCw2ICs0OTQ1LDcgQEAKIAkJRTMyMkU1
QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHU25pcHBldFBhcmFtcy5oOyBwYXRoID0gZGZnL0RGR1NuaXBw
ZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTQxREE2NDRB
NDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5jcHA7IHBhdGggPSBmdGwvRlRMU25pcHBl
dFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjJFNUE1MURBNjQ0
QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuaDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RB
NSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVy
Rm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1OTU2MzIx
RkRBMkM4MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1By
b3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJvdG90eXBlSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUg
LyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
YXNzSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjcyLDYgKzcyNzQs
NyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
Ki8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAv
KiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICovLAogCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBMUQ3OTJGQjFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUEx
MkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKQEAgLTk3NTUsNiAr
OTc1OCw3IEBACiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0
NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1h
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2
RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3IuY3BwCmluZGV4IGYwMGE2NmIwODIyNzVmNTBjMjBmZmY2YWY4MjYxM2I2OGFlMzBhZTku
LjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3MWMyNmQ4MDZiYmY5ZDBhYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTIgKzQ0LDYgQEAgY29uc3RleHByIHNpemVf
dCBjYXNlRmlyc3RJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWVyaWNJbmRleCA9IDI7
CiB9CiAKLXZvaWQgSW50bENvbGxhdG9yOjpVQ29sbGF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVD
b2xsYXRvciogY29sbGF0b3IpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbGxhdG9yKQotICAgICAgICB1
Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0KLQogSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxDb2xsYXRvciog
Zm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFw
KSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA2OWNiMzIzZTIxNGQwY2I1YmQ2YjczZDEzMDNl
OWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJjZDU1NDRjNzIzNjBjZGI1YTk2YWVkNzA5ZDMwNWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtMjYs
OCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgotCi1zdHJ1
Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorI2luY2x1ZGUgPHd0Zi91
bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03NCw5ICs3
NCw3IEBAIGNsYXNzIEludGxDb2xsYXRvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBlbnVtIGNsYXNzIFNlbnNpdGl2aXR5IDogdWludDhfdCB7IEJhc2UsIEFjY2VudCwg
Q2FzZSwgVmFyaWFudCB9OwogICAgIGVudW0gY2xhc3MgQ2FzZUZpcnN0IDogdWludDhfdCB7IFVw
cGVyLCBMb3dlciwgRmFsc2UgfTsKIAotICAgIHN0cnVjdCBVQ29sbGF0b3JEZWxldGVyIHsKLSAg
ICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNvbnN0OwotICAgIH07CisgICAgdXNp
bmcgVUNvbGxhdG9yRGVsZXRlciA9IElDVURlbGV0ZXI8dWNvbF9jbG9zZT47CiAKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3
Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJmNDY3NjEzODUuLjliNzE4NWJiYWVlZjI4ODllMjVhZjZl
YTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTAsMTIgKzUwLDYgQEAgY29uc3RleHBy
IHNpemVfdCBob3VyQ3ljbGVJbmRleCA9IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWJlcmluZ1N5
c3RlbUluZGV4ID0gMjsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0
RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKLXsKLSAg
ICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKLX0KLQog
SW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkg
SW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA5ZDI2NzFjODljMjRh
MDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3N2VkLi5mZTJkMzE0MDgxY2NmODY2ODMwNjk5ZWZlNzE5
NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9p
Y3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksOSArODAsNyBAQCBj
bGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVy
aWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFtZSA6IHVpbnQ4X3QgeyBOb25lLCBTaG9y
dCwgTG9uZyB9OwogCi0gICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZv
aWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVURh
dGVGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1ZGF0X2Nsb3NlPjsKIAogICAgIHZvaWQgc2V0
Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2Ri
MmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLjY5OWRkMDY2MjQ1MDdiMTRhMzY3MTkyZjM3ZDM0ODMy
ODhkMjEwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZv
cm1hdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00Miw2ICs0Myw3IEBAIGNvbnN0
IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBuCiAKIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwg
ewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51
IiB9OworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51
bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MSw2IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9y
bWF0RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRsTnVtYmVyRm9ybWF0
OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJG
b3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9z
ZShudW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVy
Rm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9y
bWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTExOSw3
ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0
cmluZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3Vy
cmVuY3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kg
YW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNv
ZGUsCiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGlu
ZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6
OnBhaXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJl
bmN5TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJ
RiIsIDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0OSwxMTUgQEAgc3Rh
dGljIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5
KQogICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4K
K3N0cnVjdCBNZWFzdXJlVW5pdCB7CisgICAgQVNDSUlMaXRlcmFsIHR5cGU7CisgICAgQVNDSUlM
aXRlcmFsIHN1YlR5cGU7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0
aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQorewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAg
ICAgeyAiYXJlYSJfcywgImFjcmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJf
cyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1w
ZXJhdHVyZSJfcywgImNlbHNpdXMiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGlt
ZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7
ICJhbmdsZSJfcywgImRlZ3JlZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZh
aHJlbmhlaXQiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwK
KyAgICAgICAgeyAibGVuZ3RoIl9zLCAiZm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3Ms
ICJnYWxsb24iX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAg
ICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3Ms
ICJncmFtIl9zIH0sCisgICAgICAgIHsgImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAiaG91ciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNo
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsg
ImRpZ2l0YWwiX3MsICJraWxvYnl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dy
YW0iX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAg
IHsgInZvbHVtZSJfcywgImxpdGVyIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdh
Yml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAg
ICB7ICJsZW5ndGgiX3MsICJtZXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxl
Il9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisg
ICAgICAgIHsgInZvbHVtZSJfcywgIm1pbGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3Ro
Il9zLCAibWlsbGltZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vj
b25kIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAg
IHsgImR1cmF0aW9uIl9zLCAibW9udGgiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNl
Il9zIH0sCisgICAgICAgIHsgImNvbmNlbnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7
ICJkaWdpdGFsIl9zLCAicGV0YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5k
Il9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsg
Im1hc3MiX3MsICJzdG9uZSJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJf
cyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAi
ZHVyYXRpb24iX3MsICJ3ZWVrIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3Mg
fSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKworICAgIGF1
dG8gaXRlcmF0b3IgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oc2ltcGxlVW5pdHMpLCBz
dGQ6OmVuZChzaW1wbGVVbml0cyksIHVuaXRJZGVudGlmaWVyLAorICAgICAgICBbXSAoY29uc3Qg
TWVhc3VyZVVuaXQmIHVuaXQsIFN0cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmlldyh1bml0LnN1YlR5cGUp
LCB1bml0SWRlbnRpZmllcikgPCAwOworICAgICAgICB9KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0g
c3RkOjplbmQoc2ltcGxlVW5pdHMpICYmICFXVEY6OmNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmll
dyhpdGVyYXRvci0+c3ViVHlwZSksIHVuaXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuICpp
dGVyYXRvcjsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitzdHJ1Y3QgV2VsbEZvcm1l
ZFVuaXQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0
IG51bWVyYXRvcikKKyAgICAgICAgOiBudW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9
CisKKyAgICBXZWxsRm9ybWVkVW5pdChNZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0
IGRlbm9taW5hdG9yKQorICAgICAgICA6IG51bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwg
ZGVub21pbmF0b3IoZGVub21pbmF0b3IpCisgICAgeworICAgIH0KKworICAgIE1lYXN1cmVVbml0
IG51bWVyYXRvcjsKKyAgICBPcHRpb25hbDxNZWFzdXJlVW5pdD4gZGVub21pbmF0b3I7Cit9Owor
CitzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmll
cihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVkdW5pdGlkZW50aWZpZXIKKyAgICBpZiAoYXV0byB1bml0
ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKHVuaXRJZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KHVuaXQudmFsdWUoKSk7CisKKyAgICAvLyBJZiB0aGUg
c3Vic3RyaW5nICItcGVyLSIgZG9lcyBub3Qgb2NjdXIgZXhhY3RseSBvbmNlIGluIHVuaXRJZGVu
dGlmaWVyLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIHBlciA9IFN0cmluZ1ZpZXcoIi1w
ZXItIl9zKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOwor
ICAgIGlmIChwb3NpdGlvbiA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmICh1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zaXRpb24gKyBwZXIu
bGVuZ3RoKCkpICE9IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKG51bWVyYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gbnVt
ZXJhdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICBhdXRv
IG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9y
KTsKKyAgICBpZiAoIW51bWVyYXRvclVuaXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBk
ZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZyhwb3NpdGlvbiArIHBlci5sZW5n
dGgoKSk7CisgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElk
ZW50aWZpZXIoZGVub21pbmF0b3IpOworICAgIGlmICghZGVub21pbmF0b3JVbml0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVy
YXRvclVuaXQudmFsdWUoKSwgZGVub21pbmF0b3JVbml0LnZhbHVlKCkpOworfQorCiAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkK
IHsKQEAgLTE5NywxNCArMzAyLDE5IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6
ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBt
X251bWJlcmluZ1N5c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHls
ZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAi
c3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJl
bmN5XCIiLCAiZGVjaW1hbCIpOworICAgIC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGlu
dGxPYmplY3QsIG9wdGlvbnMpCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1z
ZXRudW1iZXJmb3JtYXR1bml0b3B0aW9ucworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0
eWxlLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxl
IG11c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBv
ciBcInVuaXRcIiIsICJkZWNpbWFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBpZiAoc3R5bGVTdHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHls
ZVN0cmluZyA9PSAiZGVjaW1hbCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFs
OwotICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChz
dHlsZVN0cmluZyA9PSAicGVyY2VudCJfcykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJj
ZW50OwotICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBp
ZiAoc3R5bGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6
OkN1cnJlbmN5OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAg
ICBtX3N0eWxlID0gU3R5bGU6OlVuaXQ7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIApAQCAtMjEyLDcgKzMyMiw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5
LmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJy
ZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2Rl
Il9zKSk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImN1cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI5LDYwICszMzksMjY2IEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1
cnJlbmN5RGlnaXRzKGN1cnJlbmN5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNw
bGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1i
b2wiLCAibmFtZSIgfSwgImN1cnJlbmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwg
XCJzeW1ib2xcIiwgb3IgXCJuYW1lXCIiLCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5
RGlzcGxheVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAi
c3ltYm9sIiwgIm5hcnJvd1N5bWJvbCIsICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3Qg
YmUgZWl0aGVyIFwiY29kZVwiLCBcInN5bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5h
bWVcIiIsICJzeW1ib2wiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nID09ICJjb2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxh
eVN0cmluZyA9PSAiY29kZSJfcykKICAgICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3Vy
cmVuY3lEaXNwbGF5OjpDb2RlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJp
bmcgPT0gInN5bWJvbCIpCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9
PSAic3ltYm9sIl9zKQogICAgICAgICAgICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURp
c3BsYXk6OlN5bWJvbDsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09
ICJuYW1lIikKKyAgICAgICAgZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJy
b3dTeW1ib2wiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlz
cGxheTo6TmFycm93U3ltYm9sOworICAgICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJp
bmcgPT0gIm5hbWUiX3MpCiAgICAgICAgICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5
RGlzcGxheTo6TmFtZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRs
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3Vy
cmVuY3lTaWduU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQi
LCAiYWNjb3VudGluZyIgfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJk
XCIgb3IgXCJhY2NvdW50aW5nXCIiLCAic3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVt
SW50ZWdlckRpZ2l0czsKKyAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAg
ICAgICAgaWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAg
ICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2Ug
aWYgKGN1cnJlbmN5U2lnblN0cmluZyA9PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1f
Y3VycmVuY3lTaWduID0gQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5
KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsKKyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5p
dCIpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0
OworICAgIGlmICghdW5pdC5pc051bGwoKSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdl
bGxGb3JtZWRVbml0SWRlbnRpZmllcih1bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5p
dCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1
bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2Ug
aWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVuaXQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInVuaXQgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRs
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIHVuaXREaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
bml0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJuYXJyb3ciLCAibG9uZyIgfSwgInVuaXREaXNwbGF5
IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiLCAic2hv
cnQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChtX3N0
eWxlID09IFN0eWxlOjpVbml0KSB7CisgICAgICAgIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAi
c2hvcnQiX3MpCisgICAgICAgICAgICBtX3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6OlNob3J0
OworICAgICAgICBlbHNlIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAibmFycm93Il9zKQorICAg
ICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpOYXJyb3c7CisgICAgICAgIGVs
c2UgaWYgKHVuaXREaXNwbGF5U3RyaW5nID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV91bml0
RGlzcGxheSA9IFVuaXREaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OwotICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkKLSAg
ICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFj
dGlvbkRpZ2l0cywgY3VycmVuY3lEaWdpdHMpOwotICAgIGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5
bGU6OlBlcmNlbnQpCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAgZWxzZQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7CisgICAgdW5z
aWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpD
dXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IDA7CisgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5j
eURpZ2l0cyA6IChtX3N0eWxlID09IFN0eWxlOjpQZXJjZW50KSA/IDAgOiAzOwogCi0gICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25E
aWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCk7CisgICAgU3RyaW5nIG5vdGF0aW9uU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlv
biIpLCB7ICJzdGFuZGFyZCIsICJzY2llbnRpZmljIiwgImVuZ2luZWVyaW5nIiwgImNvbXBhY3Qi
IH0sICJub3RhdGlvbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wi
LCBcImVuZ2luZWVyaW5nXCIsIG9yIFwiY29tcGFjdFwiIiwgInN0YW5kYXJkIik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICBpZiAobm90YXRpb25TdHJpbmcgPT0g
InN0YW5kYXJkIl9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTdGFuZGFy
ZDsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAic2NpZW50aWZpYyJfcykKKyAgICAg
ICAgbV9ub3RhdGlvbiA9IEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzsKKyAgICBlbHNlIGlmIChu
b3RhdGlvblN0cmluZyA9PSAiZW5naW5lZXJpbmciX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJ
bnRsTm90YXRpb246OkVuZ2luZWVyaW5nOworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09
ICJjb21wYWN0Il9zKQorICAgICAgICBtX25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpDb21wYWN0
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBKU1ZhbHVl
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIp
KTsKKyAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBv
cHRpb25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9w
dGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgU3RyaW5nIGNvbXBhY3REaXNwbGF5ID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7ICJzaG9ydCIsICJsb25nIiB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIx
LCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAg
ICAgIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRz
OwotICAgICAgICBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsK
KyAgICAgICAgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1f
Y29tcGFjdERpc3BsYXkgPSBDb21wYWN0RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYg
KGNvbXBhY3REaXNwbGF5ID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxh
eSA9IENvbXBhY3REaXNwbGF5OjpMb25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGlu
dGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgbV91c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpG
YWxzZTsKIAorICAgIFN0cmluZyBzaWduRGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXki
KSwgeyAiYXV0byIsICJuZXZlciIsICJhbHdheXMiLCAiZXhjZXB0WmVybyIgfSwgInNpZ25EaXNw
bGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwi
ZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgIGlmIChzaWduRGlzcGxheSA9PSAiYXV0byJfcykKKyAgICAgICAgbV9zaWdu
RGlzcGxheSA9IFNpZ25EaXNwbGF5OjpBdXRvOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09
ICJuZXZlciJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpOZXZlcjsK
KyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiYWx3YXlzIl9zKQorICAgICAgICBtX3NpZ25E
aXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFsd2F5czsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9
PSAiZXhjZXB0WmVybyJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpF
eGNlcHRaZXJvOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZvcm1hdHRlciBoZXJlLgorCisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8vIENvbnN0cnVjdGluZyBJQ1Ug
TnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZvcm1hdHRlci4KKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAorCisgICAgU3RyaW5nQnVpbGRl
ciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInJv
dW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgY2Fz
ZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0b24gaXMgbmVlZGVkLgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50OgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkg
eworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CisgICAg
ICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNpZnkgdW5pdC13aWR0aC4KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3lt
Ym9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdp
ZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lE
aXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6OlVuaXQ6IHsKKyAgICAgICAg
Ly8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1aXJlZCBvcHRpb246IHRoZSB1
bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0dGVkLgorICAgICAgICAvLyBU
aGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJvdGggdGhlIHR5cGUgYW5kIHRo
ZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4KKyAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgYXV0byBudW1l
cmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcjsKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUsICctJywgbnVtZXJhdG9yVW5pdC5zdWJU
eXBlKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVk
VW5pdC0+ZGVub21pbmF0b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0g
ZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUsICctJywgZGVub21pbmF0b3JV
bml0LnN1YlR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERp
c3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxs
LW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1
L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBp
bnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjpt
YWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVz
ZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNh
bnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
LSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55
dGhpbmcuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7
CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3Rh
dGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dpdGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAg
ICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1h
dF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5j
eVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFydCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAg
Ym9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3Vy
cmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3Np
Z25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVz
ZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHNpZ24tYWNjb3VudGluZyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0byIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3Bs
YXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBz
aWduLWFsd2F5cyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNl
cHRaZXJvOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
c2lnbi1leGNlcHQtemVybyIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1f
dXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3Jv
dXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2Us
IG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZl
cmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3Jt
YXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRl
ckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxlIHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3
aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksMTUgKzYx
NSw0NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjYXNlIEN1cnJlbmN5RGlz
cGxheTo6U3ltYm9sOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3Vw
cG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxl
ID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIHN3aXRjaCAobV9jdXJyZW5jeVNpZ24pIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWdu
OjpBY2NvdW50aW5nOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1
cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRp
YWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGlu
IHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJk
OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAg
ICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAgY2FzZSBJbnRsTm90YXRpb246
OkNvbXBhY3Q6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25E
aXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZl
cjoKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAgY2FzZSBTaWduRGlzcGxheTo6
RXhjZXB0WmVybzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1cmUgaXMg
bm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAt
MzI0LDQwICs2NjksNTggQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIW1fbWluaW11bVNpZ25pZmljYW50RGln
aXRzKSB7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRl
Z2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwog
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhf
RlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERp
Z2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVO
VU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwogICAgICAgICB1bnVtX3NldEF0dHJp
YnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRp
bmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgc2luY2UgdXNl
ZCBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJfcyk7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwg
VU5VTV9ST1VORF9IQUxGVVApOworI2VuZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
bnVtYmVyLiJfcyk7CisgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdl
dCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0
dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1h
dCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREb3VibGUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgYnVmZmVyLCBudWxscHRy
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OwotCisjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUg
SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiB2YWx1ZSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMzY4LDEwICs3MzEsMjQgQEAgSlNWYWx1ZSBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQq
IHZhbHVlKQogICAgIGF1dG8qIHJhd1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cjsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0dGVyKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBh
dXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBV
Rm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICB1
bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCByYXdTdHJpbmcsIHN0
cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9y
bWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZv
cm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51
bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcu
bGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKQEAgLTM4NCw2ICs3NjEsOCBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJl
dHVybiAicGVyY2VudCJfczsKICAgICBjYXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgcmV0
dXJuICJjdXJyZW5jeSJfczsKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAgICAgICByZXR1cm4g
InVuaXQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKQEAgLTM5Niw2ICs3NzUsOCBAQCBBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJy
ZW5jeURpcwogICAgICAgICByZXR1cm4gImNvZGUiX3M7CiAgICAgY2FzZSBDdXJyZW5jeURpc3Bs
YXk6OlN5bWJvbDoKICAgICAgICAgcmV0dXJuICJzeW1ib2wiX3M7CisgICAgY2FzZSBDdXJyZW5j
eURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKKyAgICAgICAgcmV0dXJuICJuYXJyb3dTeW1ib2wiX3M7
CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU6CiAgICAgICAgIHJldHVybiAibmFtZSJf
czsKICAgICB9CkBAIC00MDMsNiArNzg0LDc2IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6bm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAg
IHN3aXRjaCAobm90YXRpb24pIHsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6Cisg
ICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVu
dGlmaWM6CisgICAgICAgIHJldHVybiAic2NpZW50aWZpYyJfczsKKyAgICBjYXNlIEludGxOb3Rh
dGlvbjo6RW5naW5lZXJpbmc6CisgICAgICAgIHJldHVybiAiZW5naW5lZXJpbmciX3M7CisgICAg
Y2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lT
aWduU3RyaW5nKEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCit7CisgICAgc3dpdGNoIChjdXJy
ZW5jeVNpZ24pIHsKKyAgICBjYXNlIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgIHJl
dHVybiAic3RhbmRhcmQiX3M7CisgICAgY2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6Cisg
ICAgICAgIHJldHVybiAiYWNjb3VudGluZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5pdERp
c3BsYXkpCit7CisgICAgc3dpdGNoICh1bml0RGlzcGxheSkgeworICAgIGNhc2UgVW5pdERpc3Bs
YXk6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgVW5pdERpc3Bs
YXk6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBVbml0RGlz
cGxheTo6TG9uZzoKKyAgICAgICAgcmV0dXJuICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0
RGlzcGxheSBjb21wYWN0RGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKGNvbXBhY3REaXNwbGF5KSB7
CisgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgIHJldHVybiAic2hvcnQi
X3M7CisgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgcmV0dXJuICJsb25n
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHNp
Z25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJu
ICJhdXRvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICByZXR1cm4g
Im5ldmVyIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgcmV0dXJu
ICJhbHdheXMiX3M7CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAg
cmV0dXJuICJleGNlcHRaZXJvIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9u
cwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNDExLDE5ICs4NjIsMzggQEAgSlNPYmpl
Y3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0s
IG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0
eWxlKSkpOwotICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgeworICAgIHN3aXRj
aCAobV9zdHlsZSkgeworICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CisgICAgY2FzZSBTdHlsZTo6
UGVyY2VudDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJyZW5jeSkpOwogICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5j
eURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeURpc3BsYXlTdHJpbmco
bV9jdXJyZW5jeURpc3BsYXkpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5U2lnbiIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGN1cnJlbmN5U2lnblN0cmluZyhtX2N1cnJlbmN5U2lnbikpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIG1fdW5pdCkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHVu
aXREaXNwbGF5U3RyaW5nKG1fdW5pdERpc3BsYXkpKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJt
aW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7
Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRz
KSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzKSk7Ci0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIEFT
U0VSVChtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5n
VHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWdu
aWZpY2FudERpZ2l0czoKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIp
LCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRp
b24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkp
OworICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFj
dERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyht
X2NvbXBhY3REaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
c2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsK
IH0KIApAQCAtNDMyLDcgKzkwMiw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRG
b3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0
LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlw
ZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIElu
dGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNo
IChmaWVsZCkgewogICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgpAQCAtNDQ1LDIwICs5MTUs
MzEgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiAgICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7CiAg
ICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImRl
Y2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKKyAgICAgICAg
cmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lH
Tl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudE1pbnVzU2lnbiJfczsKKyAgICBjYXNl
IFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9z
OwogICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVy
biAiZ3JvdXAiX3M7CiAgICAgY2FzZSBVTlVNX0NVUlJFTkNZX0ZJRUxEOgogICAgICAgICByZXR1
cm4gImN1cnJlbmN5Il9zOwogICAgIGNhc2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICBy
ZXR1cm4gInBlcmNlbnRTaWduIl9zOworICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQi
LCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQt
ZW4tVVMuanMKKyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHls
ZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKICAgICBjYXNlIFVOVU1fU0lH
Tl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/ICJtaW51c1NpZ24iX3MgOiAicGx1
c1NpZ24iX3M7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gIm1pbnVzU2ln
biJfcyA6ICJwbHVzU2lnbiJfczsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisg
ICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9z
OworICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBhY3Qi
X3M7CisjZW5kaWYKICAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0aGVy
ZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgogICAg
IC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24gcGFy
dCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgogICAgIGNhc2UgVU5VTV9QRVJN
SUxMX0ZJRUxEOgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgY2Fz
ZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxE
OgogICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMg
ZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFuICJ1bmtub3duIiBwYXJ0LgogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiAidW5rbm93biJfczsKQEAgLTQ2Niw3ICs5NDcsNyBAQCBz
dGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmll
bGQsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gInVua25vd24iX3M7CiB9CiAKLXZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0
cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ3OCw3ICs5NTks
MTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICBWZWN0b3I8SW50bE51bWJlckZvcm1h
dEZpZWxkLCAzMj4gZmllbGRzKHN0cmluZ0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKICAgICBpbnQz
Ml90IGJlZ2luSW5kZXggPSAwOwogICAgIGludDMyX3QgZW5kSW5kZXggPSAwOwotICAgIGF1dG8g
ZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVu
ZEluZGV4KTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRv
IGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBpdGVy
YXRvciJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgd2hpbGUgKGZpZWxkVHlwZSA+
PSAwKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OwogICAg
ICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7CkBAIC00
ODYsNyArOTcyLDExIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVy
bmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgICAgICAgICBpZiAo
ZmllbGRzW2ldLnNpemUgPj0gc2l6ZSkKICAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRs
TnVtYmVyRm9ybWF0RmllbGQgeyBmaWVsZFR5cGUsIHNpemUgfTsKICAgICAgICAgfQotICAgICAg
ICBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAm
ZW5kSW5kZXgpOworICAgICAgICBmaWVsZFR5cGUgPSBpdGVyYXRvci5uZXh0KGJlZ2luSW5kZXgs
IGVuZEluZGV4LCBzdGF0dXMpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
aXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICB9CiAKICAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKQEAgLTUwMCw3ICs5OTAsNyBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibAogICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxkc1tjdXJyZW50SW5k
ZXhdLnR5cGU7CiAgICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBzdHJpbmdMZW5ndGggJiYg
ZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZSA9PSBmaWVsZFR5cGUpCiAgICAgICAgICAgICArK2N1
cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFs
RmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFy
dFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBq
c1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUp
LCBzdHlsZSwgdmFsdWUpKTsKICAgICAgICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2
bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBjdXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKICAg
ICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBh
cnRUeXBlKTsKQEAgLTUxNSw4ICsxMDA1LDYgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMK
IEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTUyNiw5ICsxMDE0LDI4IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3Ii
X3MpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8g
Zm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3Jt
YXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHVudW1m
X2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OworICAgIHVudW1mX3Jlc3VsdEdldEFsbEZpZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJlci5n
ZXQoKSwgZmllbGRJdHIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRl
cmF0b3IoKmZpZWxkSXRyLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0
KTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXRE
b3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVs
ZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIl9zKTsKKyAgICBJbnRsRmllbGRJdGVyYXRvciBpdGVyYXRvcigqZmllbGRJdHIuZ2V0
KCkpOworI2VuZGlmCiAKICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwog
CkBAIC01MzYsNyArMTA0Myw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFw
YXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKIAotICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVl
LCByZXN1bHRTdHJpbmcsIGZpZWxkSXRyLmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0
c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRl
cmF0b3IsIHBhcnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oCmluZGV4IDQzMDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjVi
NzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNjYzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4
LDExICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2Rl
L3VudW0uaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYg
IWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJ
RUxEIGFuZCBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2
NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9V
X05VTUJFUl9GT1JNQVRURVIgMQorI2VuZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFz
cyBKU0JvdW5kRnVuY3Rpb247CiAKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4
X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9
OworZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlm
aWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4g
dm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlw
ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xh
c3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0
IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym91bmRGb3JtYXQuZ2V0KCk7IH0KICAgICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3Vu
ZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqLCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3Np
dGlvbkl0ZXJhdG9yKiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAg
ZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwg
VW5pdCB9OworCisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVs
ZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5z
aWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVt
YmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50
bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0
YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAK
LSAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJl
bmN5IH07Ci0gICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwg
U3ltYm9sLCBOYW1lIH07Ci0KLSAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAg
ICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAg
ZW51bSBjbGFzcyBDdXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJy
b3dTeW1ib2wsIE5hbWUgfTsKKyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3Qg
eyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1
aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERp
c3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNw
bGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsK
IAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251
bWJlckZvcm1hdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcg
VU51bWJlckZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1
c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1
bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0
dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJG
b3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8VU51bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7
CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdT
eXN0ZW07CiAgICAgU3RyaW5nIG1fY3VycmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1
bnNpZ25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzIHsgMyB9OwpAQCAtOTYsNyArMTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNp
bWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJl
bmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKKyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5Owor
ICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1f
bm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9z
aWduRGlzcGxheTsKICAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJv
dW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlYThhN2FmMWNkMjM1NTFlNzQwMTE1YjQ4NTMxZDBmNmQ3ZDhhN2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5l
cy5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNl
dE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
bnRsVHlwZSogaW50bEluc3RhbmNlLCBKU09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVn
ZXJEaWdpdHMiKSwgMSwgMjEsIDEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBKU1ZhbHVlIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1G
cmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworCisgICAgSlNWYWx1ZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdl
dChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rp
b25EaWdpdHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmlj
YW50RGlnaXRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisK
KyAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0
KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZp
Y2FudERpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVn
ZXJEaWdpdHM7CisKKyAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5k
ZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5
cGU6OlNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1T
aWduaWZpY2FudERpZ2l0cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0
dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25E
aWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
QWN0dWFsRGVmYXVsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAobm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAg
IGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0
Um91bmRpbmc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1f
cm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50
bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0
c0RlZmF1bHQ7CisgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1h
eGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9y
IHsKK3B1YmxpYzoKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7
CisKKyAgICBleHBsaWNpdCBJbnRsRmllbGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9y
JiBpdGVyYXRvcikKKyAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9
CisKKyAgICBpbnQzMl90IG5leHQoaW50MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5k
ZXgsIFVFcnJvckNvZGUmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVmaWVsZHBvc2l0ZXJfbmV4
dCgmbV9pdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3ImIG1faXRlcmF0b3I7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwCmluZGV4IGM0OTlhZGExOWYzYWQ0YzJmODMwYWRjM2M1M2I4ZDVhNmMxZjU3
NmYuLmU5ZDMyYTI4ZDBjYmQ3OWY2NDEzZjc5MjU4MDEyMDYxMDE1NzJhN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxl
cy5oIgogCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENv
bnN0cnVjdG9yLmgiCkBAIC0zNSwyNSArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3Qg
Q2xhc3NJbmZvIEludGxQbHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVs
ZXMpIH07CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVy
YXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpIGNvbnN0Ci17Ci0gICAgaWYgKHBsdXJh
bFJ1bGVzKQotICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Ci19Ci0KLXZvaWQg
SW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVy
Rm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAg
ICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCi1zdHJ1Y3QgVUVudW1lcmF0aW9u
RGVsZXRlciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFVFbnVtZXJhdGlvbiogZW51bWVyYXRpb24p
IGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoZW51bWVyYXRpb24pCi0gICAgICAgICAgICB1ZW51
bV9jbG9zZShlbnVtZXJhdGlvbik7Ci0gICAgfQotfTsKK3VzaW5nIFVFbnVtZXJhdGlvbkRlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1
cmFsUnVsZXM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTI1
LDM0ICsxMDgsOCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5h
bCIgPyBUeXBlOjpPcmRpbmFsIDogVHlwZTo6Q2FyZGluYWw7CiAKLSAgICB1bnNpZ25lZCBtaW5p
bXVtSW50ZWdlckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwg
MjEsIDEpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9t
aW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWdu
ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwg
MjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM7Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQg
bWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMi
KSwgbWluaW11bUZyYWN0aW9uRGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dCk7CisgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywg
b3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1h
eGltdW1GcmFjdGlvbkRpZ2l0czsKLQotICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERp
Z2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWdu
ZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgfQog
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3Jt
YXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+
KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRh
KCksIG51bGxwdHIsICZzdGF0dXMpKTsKQEAgLTE2MSwxNCArMTE4LDIwIEBAIHZvaWQgSW50bFBs
dXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpIHsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwotICAgICAg
ICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklG
SUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICAg
ICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05J
RklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAg
fSBlbHNlIHsKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRl
Z2VyRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwog
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhf
RlJBQ1RJT05fRElHSVRTLCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5U
X0RJR0lUU19VU0VELCB0cnVlKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMpOworICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERp
Z2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKQEAgLTE5MSwxMSArMTU0LDE4IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFs
UnVsZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlw
ZSA9PSBUeXBlOjpPcmRpbmFsID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
SW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0g
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7
Ci0gICAgaWYgKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgp
KSk7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgewor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFj
dGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhp
bXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERp
Z2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNp
Z25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJl
cihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBKU0FycmF5KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IGIwMTVmZTgyYTBlNjkzYTBjYmQw
ODJiMjIwZjI1NWQ4MmFlNzRiNzEuLmZhNDMzZGZhMjhjMGFmMzM1ODhjNTEyZjQzNDg0YTc3NWU0
MGNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oCkBAIC0yNSw5ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNv
ZGUvdW51bS5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUz
LDYgKzU0LDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogCiAgICAgREVDTEFSRV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW50bFR5cGU+CisgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQs
IEludGxOb3RhdGlvbik7CisKICAgICB2b2lkIGluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKICAgICBKU1ZhbHVl
IHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmpl
Y3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwpAQCAtNjYsMTIgKzcw
LDggQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07
CiAKLSAgICBzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0
b3IoKShVUGx1cmFsUnVsZXMqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9y
bWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29u
c3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUGx1cmFsUnVsZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1
cGxydWxlc19jbG9zZT47CisgICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxl
dGVyPHVudW1fY2xvc2U+OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBs
dXJhbFJ1bGVzRGVsZXRlcj4gbV9wbHVyYWxSdWxlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OwpAQCAtODAs
OCArODAsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAg
ICB1bnNpZ25lZCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzOworICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGln
aXRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9
OworICAgIEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0cyB9OwogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdC5jcHAKaW5kZXggOTFiMWJmYTE0MjU4OTFmN2MzYzg1NDRhMmI3NDk4
MDMwZjdjNDZlNy4uNzI5NDM0ZGNlNmE4ODcwMDE5Nzg0YmY4OWQ4ZDNmM2RhNmJkMmY2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCkBAIC00MCwxOCArNDAsNiBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZl
VGltZUZvcm1hdEludGVybmFsIHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVu
c2lvbktleXNbMV0gPSB7ICJudSIgfTsKIH0KIAotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
OjpVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXIqIHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Ci17Ci0g
ICAgaWYgKHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpCi0gICAgICAgIHVyZWxkYXRlZm10X2Ns
b3NlKHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOwotfQotCi12b2lkIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQq
IG51bWJlckZvcm1hdCkgY29uc3QKLXsKLSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1
bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7Ci19Ci0KIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogICAgIGF1dG8qIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBz
dHJ1Y3R1cmUpOwpAQCAtMzA5LDcgKzI5Nyw4IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZv
cm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAK
LSAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9i
amVjdCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBq
c1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50
bEZpZWxkSXRlcmF0b3IgZmllbGRJdGVyYXRvcigqaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICBJ
bnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRs
TnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwg
ZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9T
dHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1YjgxZmE4MzhkMzVlZjMzZWU5YzBhZTZhNTAyNzBkMTZm
ODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1YzFjYTNkZGZiYjk5YTIxZDQxM2E2OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmgKQEAgLTY4LDEyICs2OCw4IEBAIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IExvbmcsIFNob3J0LCBOYXJyb3cgfTsKIAotICAgIHN0cnVjdCBVUmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJlbGF0
aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVy
Rm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0Kikg
Y29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRlZm10X2Nsb3NlPjsKKyAgICB1c2luZyBVTnVtYmVyRm9y
bWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCmluZGV4IGUxMmY0ODE2YzNlMTQ0MjU1YzFhNGY1MzJhMjg2NzdkZGIz
ZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3YTZjODc4MDBiNTVhZGM2MDA3MjIwZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
aWN1L0lDVUhlbHBlcnMuaD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtMzA3Niw5ICszMDc3LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KEpTR2xvYmFsT2IKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKLSAgICBVVmVyc2lv
bkluZm8gdmVyc2lvbkluZm87Ci0gICAgdV9nZXRWZXJzaW9uKHZlcnNpb25JbmZvKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNpb25JbmZvWzBdKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkpKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3NlcnRF
bmFibGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMjYzYjU3NWM0ZTQ5MGI5MTYxODI1YTBjZjE2NTdl
MTFhYmRiYTguLjg0NTZlMzBiYmFmZWRkNjk3MWFlYTA2M2MwNDkwMTRlZWNiMDVjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgwLDYgKzE4MCw3IEBA
CiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUyNjFGNTUy
MkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwogCQlFMzkyRkEyNzIy
RTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAv
KiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovOyB9OwogCQlFM0EzMkJDNDFGQzgzMEUyMDA3RDdF
NzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5j
cHAgKi87IH07CisJCUUzQkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkUwOUE2MjRB
NTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1
NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDND
MUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJCUVCNjFFREM3
MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2MUVEQzYyNDA5Q0NDMDAwMUVGRTM2
IC8qIFN5c3RlbVRyYWNpbmdDb2NvYS5jcHAgKi87IH07CkBAIC03MzEsNiArNzMyLDcgQEAKIAkJ
RTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyog
SlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzMx
RkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTND
Rjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJl
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFFNTVCNCAvKiBOb25t
b3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyNzMsOCArMTI3NSw4IEBACiAJCQkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5
QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8q
IFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55
UHRyU2V0LmggKi8sCi0JCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8qIFRyYW5zbGF0ZWRQ
cm9jZXNzLmggKi8sCiAJCQkJNTIxQ0M2QjMyNEEyNzdDMjAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQ
cm9jZXNzLmNwcCAqLywKKwkJCQkyRDFGMkY0NjI0OThGNzMzMDBDNjNBODMgLyogVHJhbnNsYXRl
ZFByb2Nlc3MuaCAqLywKIAkJCQkxNDlFRjE2MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUu
aCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8sCiAJ
CQkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8qIFVuYWxpZ25lZEFjY2Vzcy5oICovLApAQCAt
MTQ1Miw2ICsxNDU0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAqLywKKwkJCQlF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8sCiAJCQkJNTJCMjI4
QzEyNDU4REM4MjAwNzUzRDkxIC8qIElDVUhlbHBlcnMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aWN1OwpAQCAtMTY3Niw2ICsxNjc5LDcgQEAKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMg
LyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRDgxNTFB
ODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I1QjQ0
RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
QkUwOUE3MjRBNTg1NEQwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTE3NDcsNyArMTc1MSw2IEBACiAJCQkJQTVCQTE1RjUxODI0
MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBG
RERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MjFDQzZCNDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFBy
b2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8q
IFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJEMzE4QTFFOEMzMDBE
MEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcx
NTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLApAQCAtMTc2NCw2ICsx
NzY3LDcgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFEM0YgLyogVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzA3NUY1MUZCRjUz
Q0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MjFDQzZC
NDI0QTI3ODA5MDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZBNkYzOTUyMENDQUNFOTAwQTAzRENEIC8qIFVuaXF1ZUFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDcxZWIyODIzNTQ5ZTVkNWRhMDdjYmFi
YTk0ZTk0NjExMDFlMjJkLi5kMjIwZTZhODg4NjdlMWVmMTQwZDBiMGM0N2UwOTUyMDY2ZDBiZWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDk5LDYgKzQ5OSw3IEBAIHNldChXVEZfU09VUkNF
UwogICAgIHVuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCiAKICAgICB1bmljb2RlL2ljdS9Db2xs
YXRvcklDVS5jcHAKKyAgICB1bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcAogKQogCiBzZXQoV1RG
X1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgK
aW5kZXggYTkwOGRmM2JlYTYxZmZjMjNlYmRkYjM0NGM3NTZmYzJjOGU4ODI3Ny4uZjdhNDc5YTBi
YTA3MWVmMDY4OWEwZTEyMzJmYmViNDRhNWQwYjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0
ZXJhbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9B
U0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKIApAQCAtNDcsNyArNDgsOSBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAotICAgIGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKyAgICBj
b25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFj
dGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0KIAogcHJpdmF0ZToK
ICAgICBjb25zdGV4cHIgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAKaW5kZXggZmQ3OTM4MzBiOTZhMTE5ZDhkNmZmYTAxNTEzN2M5OTNlZDhlNzIzNy4uNDFm
YzdhNmI3OWQ1YmZiYmZkMDAzMWUwZDkyNWQ0ZTE5NDcwZGVjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuY3BwCkBAIC0zNDAsNiArMzQwLDIwIEBAIGJvb2wgU3RyaW5nVmlldzo6Y29udGFp
bnMoY29uc3QgY2hhciogc3RyaW5nKSBjb25zdAogICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0g
bm90Rm91bmQ7CiB9CiAKK2ludCBjb2RlUG9pbnRDb21wYXJlKFN0cmluZ1ZpZXcgbGhzLCBTdHJp
bmdWaWV3IHJocykKK3sKKyAgICBib29sIGxoc0lzOEJpdCA9IGxocy5pczhCaXQoKTsKKyAgICBi
b29sIHJoc0lzOEJpdCA9IHJocy5pczhCaXQoKTsKKyAgICBpZiAobGhzSXM4Qml0KSB7CisgICAg
ICAgIGlmIChyaHNJczhCaXQpCisgICAgICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShs
aHMuY2hhcmFjdGVyczgoKSwgbGhzLmxlbmd0aCgpLCByaHMuY2hhcmFjdGVyczgoKSwgcmhzLmxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLmNoYXJhY3RlcnM4
KCksIGxocy5sZW5ndGgoKSwgcmhzLmNoYXJhY3RlcnMxNigpLCByaHMubGVuZ3RoKCkpOworICAg
IH0KKyAgICBpZiAocmhzSXM4Qml0KQorICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShs
aHMuY2hhcmFjdGVyczE2KCksIGxocy5sZW5ndGgoKSwgcmhzLmNoYXJhY3RlcnM4KCksIHJocy5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLmNoYXJhY3RlcnMxNigp
LCBsaHMubGVuZ3RoKCksIHJocy5jaGFyYWN0ZXJzMTYoKSwgcmhzLmxlbmd0aCgpKTsKK30KKwog
I2lmIENIRUNLX1NUUklOR1ZJRVdfTElGRVRJTUUKIAogLy8gTWFuYWdlIHJlZmVyZW5jZSBjb3Vu
dCBtYW51YWxseSBzbyBVbmRlcmx5aW5nU3RyaW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVmaW5l
ZCBpbiB0aGUgaGVhZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA4YmRjOGIwZWUx
OWIzMmNkNWYwNmZmZGMyY2E3N2FlMzVhNjFmMzhkLi42YzMyMTc5NjUwN2VjNTQ4MDllN2FhNmIw
ZTU4ZTFmNGVkYmM3OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRl
cmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KQEAgLTY4LDYg
KzY5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7CiAgICAgU3RyaW5nVmlldyhjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBleHBsaWNp
dCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0
eSgpOwogCkBAIC0zNTYsNiArMzU4LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXpl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0K
IAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKK3sK
KyAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwor
fQorCiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJp
bmcpCiB7CiAgICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3RyaW5nKTsKQEAgLTEwNjYsNiArMTA3
Myw4IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3Ry
aW5nVmlldyBiKQogICAgIHJldHVybiBlcXVhbChhLCBiKTsKIH0KIAorV1RGX0VYUE9SVF9QUklW
QVRFIGludCBjb2RlUG9pbnRDb21wYXJlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjphcHBlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZjNlMTBjZjQ2ZjU5OGIzOGYxYjA0
OTI2NWZjY2U3ZmU4MmM3MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKKyNpbmNsdWRlIDxtdXRleD4KKyNp
bmNsdWRlIDx1bmljb2RlL3V2ZXJudW0uaD4KKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2Ug
SUNVIHsKKworc3RhdGljIGNvbnN0IFVWZXJzaW9uSW5mbyYgdmVyc2lvbigpCit7CisgICAgc3Rh
dGljIFVWZXJzaW9uSW5mbyB2ZXJzaW9ucyB7IH07CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgdV9n
ZXRWZXJzaW9uKHZlcnNpb25zKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVyc2lvbnM7Cit9CisK
K3Vuc2lnbmVkIG1ham9yVmVyc2lvbigpCit7CisgICAgc3RhdGljX2Fzc2VydCgwIDwgVV9NQVhf
VkVSU0lPTl9MRU5HVEgpOworICAgIHJldHVybiB2ZXJzaW9uKClbMF07Cit9CisKK3Vuc2lnbmVk
IG1pbm9yVmVyc2lvbigpCit7CisgICAgc3RhdGljX2Fzc2VydCgxIDwgVV9NQVhfVkVSU0lPTl9M
RU5HVEgpOworICAgIHJldHVybiB2ZXJzaW9uKClbMV07Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
V1RGOjpJQ1UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBl
cnMuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAppbmRleCA3MmE5
NDNlMjVhMjQ5YmY1MWY4NDRkNDBjYjdkMGY4NWE3MjIyOTE5Li45ZjhkM2FlMjYzMmY1YmExZjQ4
ODgyM2JhYTlhM2JlODk3N2E0NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVs
cGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dW5p
Y29kZS91dHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvblRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMTA3LDggKzEwOCwyNCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlw
ZXM+IFVFcnJvckNvZGUgY2FsbEJ1ZmZlcgogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLX0KK3Rl
bXBsYXRlPGF1dG8gZGVsZXRlRnVuY3Rpb24+CitzdHJ1Y3QgSUNVRGVsZXRlciB7CisgICAgdm9p
ZCBvcGVyYXRvcigpKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKGRlbGV0ZUZ1bmN0
aW9uKT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPiBwb2ludGVyKQorICAgIHsKKyAgICAgICAg
aWYgKHBvaW50ZXIpCisgICAgICAgICAgICBkZWxldGVGdW5jdGlvbihwb2ludGVyKTsKKyAgICB9
Cit9OworCituYW1lc3BhY2UgSUNVIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG1h
am9yVmVyc2lvbigpOworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG1pbm9yVmVyc2lvbigp
OworCit9IC8vIG5hbWVzcGFjZSBJQ1UKK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1By
b2R1Y2VDU3RyaW5nOwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcjsKK3Vz
aW5nIFdURjo6SUNVRGVsZXRlcjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTYzNTk3ZjRhMjBlZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYw
OWMxOS4uMTA2YWRjZjViOWI5NWQxZTM4MDcwODVmMmMzNzIwYTk1MDJiMjhiNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3JtYXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFsbCB0ZXN0MjYyIGZhaWx1cmVzIGFyZSBkdWUgdG8gb2xkIElDVSB2ZXJzaW9uLiBPbmNl
IElDVSBpcyB1cGRhdGVkLCB0aGV5IHdpbGwgZ28gYXdheS4KKworICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC11bmlmaWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qczoK
KyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAgICAoc2hvdWxkQmUudGVzdE51bWJl
ckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFt
bDoKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA2LTI2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3Qy
NjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQt
amEuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4Mjg4ZGZhMGM2N2E1OTJjMGI0NDU0N2UxMTI5N2U0MDNjNWNlZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWph
LmpzCkBAIC0wLDAgKzEsNTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2
NCkgeworICAgIHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsK
KyAgICAgICAgc3R5bGU6ICJ1bml0IiwKKyAgICAgICAgdW5pdDogIm1ldGVyLXBlci1zZWNvbmQi
LAorICAgICAgICB1bml0RGlzcGxheTogInNob3J0IgorICAgIH0pLCBgMjk5LDc5Miw0NTggbS9z
YCk7CisKKyAgICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7
CisgICAgICAgIG5vdGF0aW9uOiAic2NpZW50aWZpYyIKKyAgICB9KSwgYDkuODc3RThgKTsKKwor
ICAgIHNob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAg
ICAgbm90YXRpb246ICJlbmdpbmVlcmluZyIKKyAgICB9KSwgYDk4Ny42NTRFNmApOworCisgICAg
c2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBu
b3RhdGlvbjogImNvbXBhY3QiLAorICAgICAgICBjb21wYWN0RGlzcGxheTogImxvbmciCisgICAg
fSksIGA5LjnlhIRgKTsKKworICAgIHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3RyaW5n
KCJqYS1KUCIsIHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIiwKKyAgICAgICAgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIs
CisgICAgICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25k
IgorICAgIH0pLCBgMy4wMEU4IG0vc2ApOworCisgICAgc2hvdWxkQmUoKDU1KS50b0xvY2FsZVN0
cmluZygiamEtSlAiLCB7CisgICAgICAgIHNpZ25EaXNwbGF5OiAiYWx3YXlzIgorICAgIH0pLCBg
KzU1YCk7CisKKyAgICBzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgewor
ICAgICAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJFVVIiLAorICAg
ICAgICBjdXJyZW5jeVNpZ246ICJhY2NvdW50aW5nIgorICAgIH0pLCBgKOKCrDEwMC4wMClgKTsK
KworICAgIHNob3VsZEJlKCgwLjU1KS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAg
IHN0eWxlOiAicGVyY2VudCIsCisgICAgICAgIHNpZ25EaXNwbGF5OiAiZXhjZXB0WmVybyIKKyAg
ICB9KSwgYCs1NSVgKTsKKworICAgIHNob3VsZEJlKCgxMDApLnRvTG9jYWxlU3RyaW5nKCJqYS1K
UCIsIHsKKyAgICAgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgICAgIGN1cnJlbmN5OiAiSlBZ
IiwKKyAgICAgICAgY3VycmVuY3lEaXNwbGF5OiAibmFycm93U3ltYm9sIgorICAgIH0pLCBg77+l
MTAwYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11
bmlmaWVkLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMTIxMTU4ZmM3ZTYyNTE0YzA0OGQ1NDE2ZTRiZWI4NjcwNzgzMDBhCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5q
cwpAQCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQp
IHsKKyAgICBzaG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7Cisg
ICAgICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIiwK
KyAgICAgICAgdW5pdERpc3BsYXk6ICJzaG9ydCIKKyAgICB9KSwgYDI5OSw3OTIsNDU4IG0vc2Ap
OworCisgICAgc2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgewor
ICAgICAgICBub3RhdGlvbjogInNjaWVudGlmaWMiCisgICAgfSksIGA5Ljg3N0U4YCk7CisKKyAg
ICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAg
IG5vdGF0aW9uOiAiZW5naW5lZXJpbmciCisgICAgfSksIGA5ODcuNjU0RTZgKTsKKworICAgIHNo
b3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgbm90
YXRpb246ICJjb21wYWN0IiwKKyAgICAgICAgY29tcGFjdERpc3BsYXk6ICJsb25nIgorICAgIH0p
LCBgOTg4IG1pbGxpb25gKTsKKworICAgIHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3Ry
aW5nKCJlbi1VUyIsIHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIiwKKyAgICAgICAg
bWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDIsCisgICAgICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vj
b25kIgorICAgIH0pLCBgMy4wMEU4IG0vc2ApOworCisgICAgc2hvdWxkQmUoKDU1KS50b0xvY2Fs
ZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIHNpZ25EaXNwbGF5OiAiYWx3YXlzIgorICAgIH0p
LCBgKzU1YCk7CisKKyAgICBzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImJuIiwgewor
ICAgICAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJFVVIiLAorICAg
ICAgICBjdXJyZW5jeVNpZ246ICJhY2NvdW50aW5nIgorICAgIH0pLCBgKOCnp+CnpuCnpi7gp6bg
p6bigqwpYCk7CisKKyAgICBzaG91bGRCZSgoMC41NSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwg
eworICAgICAgICBzdHlsZTogInBlcmNlbnQiLAorICAgICAgICBzaWduRGlzcGxheTogImV4Y2Vw
dFplcm8iCisgICAgfSksIGArNTUlYCk7CisKKyAgICBzaG91bGRCZSgoMTAwKS50b0xvY2FsZVN0
cmluZygiZW4tQ0EiLCB7CisgICAgICAgIHN0eWxlOiAiY3VycmVuY3kiLAorICAgICAgICBjdXJy
ZW5jeTogIlVTRCIsCisgICAgICAgIGN1cnJlbmN5RGlzcGxheTogIm5hcnJvd1N5bWJvbCIKKyAg
ICB9KSwgYCQxMDAuMDBgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKaW5kZXgg
MzFiYmM0YTI1YzM0YTFiZDQ3YTVmM2YwMDA1MzE3NjkxOGMxZTU2MS4uZWY3NGE1OWRiY2ExZmEy
NTBlY2M3YTUzNTEzZWFkOWI2ZDQwMDI1ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQu
anMKQEAgLTQ5LDEyICs0OSwxNSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogICAgICAgICAgICAgc3R5bGU6ICJkZWNpbWFs
IiwKICAgICAgICAgICAgIGN1cnJlbmN5OiB1bmRlZmluZWQsCiAgICAgICAgICAgICBjdXJyZW5j
eURpc3BsYXk6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogdW5kZWZpbmVk
LAogICAgICAgICAgICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsCiAgICAgICAgICAgICBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM6IDAsCiAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDMsCiAgICAgICAgICAgICBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKICAg
ICAgICAgICAgIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAotICAgICAgICAg
ICAgdXNlR3JvdXBpbmc6IHRydWUKKyAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLAorICAg
ICAgICAgICAgbm90YXRpb246ICJzdGFuZGFyZCIsCisgICAgICAgICAgICBzaWduRGlzcGxheTog
ImF1dG8iCiAgICAgICAgIH07CiAgICAgICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMs
IGRpZmZlcmVuY2UpOwogICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdE9wdGlv
bnMpOwpAQCAtMTI0LDExICsxMjcsMTEgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1i
ZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3VsZFRocm93KCgpID0+IEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHN0eWxlKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9
KSwgRXJyb3IpOwogCiAvLyBUaGUgb3B0aW9uIGN1cnJlbmN5IGlzIHByb2Nlc3NlZCBjb3JyZWN0
bHkuCi1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwg
dHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVc0QnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1i
b2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1d
KSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnfSksIFt7bG9jYWxlOiAnZW4n
LCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdz
eW1ib2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czog
NH1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0
KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdjTGYnfSksIFt7bG9jYWxlOiAn
ZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6
ICdzeW1ib2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogNH1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxl
OiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3Bs
YXk6ICdzeW1ib2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRp
Z2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9j
YWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURp
c3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVu
Y3knLCBjdXJyZW5jeTogJ1VzRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2ln
bjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJl
ckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJ30pLCBbe2xv
Y2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lE
aXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1ZSk7CitzaG91bGRC
ZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJl
bmN5JywgY3VycmVuY3k6ICdjTGYnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5
JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNp
Z246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzOiA0fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCd9KSwgW3ts
b2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCcsIGN1cnJlbmN5
RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwogc2hvdWxk
VGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ1VTJCd9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51
bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVMnfSksIFJh
bmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTIERvbGxhcid9KSwgUmFuZ2VFcnJvcik7CkBA
IC0xMzYsOSArMTM5LDkgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5O
dW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnZGVjaW1hbCcsIGN1cnJlbmN5OiAnVVNEJ30pLCBb
e2xvY2FsZTogJ2VuJywgc3R5bGU6ICdkZWNpbWFsJ31dKSwgdHJ1ZSk7CiAKIC8vIFRoZSBvcHRp
b24gY3VycmVuY3lEaXNwbGF5IGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91bGRCZSh0ZXN0
TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5Jywg
Y3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJ30pLCBbe2xvY2FsZTogJ2Vu
Jywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAn
Y29kZScsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAy
fV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxh
eTogJ3N5bWJvbCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5j
eTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3RO
dW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSksIFt7bG9jYWxlOiAnZW4n
LCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdu
YW1lJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9
XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5
OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0
cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywg
e3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5
bWJvbCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VT
RCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywg
bWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRy
dWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7
c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFt
ZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcs
IGN1cnJlbmN5RGlzcGxheTogJ25hbWUnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsK
IHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJl
bmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdDb2RlJ30pLCBSYW5nZUVy
cm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBnZXQgY3VycmVuY3lEaXNwbGF5KCkgeyB0aHJv
dyBuZXcgRXJyb3IoKTsgfX0pLCBFcnJvcik7CiBzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KElu
dGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2RlY2ltYWwnLCBjdXJyZW5jeURpc3BsYXk6
ICdjb2RlJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdkZWNpbWFsJ31dKSwgdHJ1ZSk7CkBA
IC0xNzIsMTIgKzE3NSwxMiBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1h
dCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge21heGltdW1GcmFjdGlvbkRpZ2l0czogMjF9KSwgUmFuZ2VFcnJvcik7CiAK
IC8vIFRoZSBvcHRpb24gbWluaW11bVNpZ25pZmljYW50RGlnaXRzIGlzIHByb2Nlc3NlZCBjb3Jy
ZWN0bHkuCi1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHttaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czogNiwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwgdHJ1
ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwg
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA2LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIx
fV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDB9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygo
KSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAy
Mn0pLCBSYW5nZUVycm9yKTsKIAogLy8gVGhlIG9wdGlvbiBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50
bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xv
Y2FsZTogJ2VuJywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAxLCBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHM6IDZ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51
bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxl
OiAnZW4nLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzOiB1bmRlZmluZWQsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogMSwgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzOiA2fV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHttaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDcsIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0czogNn0pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDB9KSwgUmFuZ2VF
cnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11
bVNpZ25pZmljYW50RGlnaXRzOiAyMn0pLCBSYW5nZUVycm9yKTsKQEAgLTQzNSw3ICs0MzgsNyBA
QCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJl
bmNlcykgewogewogICAgIGxldCBvcHRpb25zID0gZGVmYXVsdE5Gb3JtYXQucmVzb2x2ZWRPcHRp
b25zKCk7CiAgICAgZGVsZXRlIG9wdGlvbnMubG9jYWxlOyAKLSAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShvcHRpb25zKSwgJ3sibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVj
aW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAs
Im1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOnRydWV9Jyk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4i
LCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0
aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVl
LCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKIH0KIAogLy8g
TGVnYWN5IGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRl
eCBhNzlmMmRiZTM2MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0Yjk0ZGYxLi4yMGU1ZTUzOTlhM2Mx
YWE5NjdkZTdhOTBjNWRiNWE3YzVhYzY2NTM4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yOCw3ICsy
OCw2IEBAIHNraXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZyYWN0aW9uYWxTZWNvbmRE
aWdpdHMKICAgICAtIEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKLSAg
ICAtIEludGwuTnVtYmVyRm9ybWF0LXVuaWZpZWQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBh
dGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggZjhiOWRkOTZiOWY3ZGU4Yjc2MjVkNTA5
OGNjMDIwMTQyZWEwNWNmYS4uMTgxMjgzOWYyNWFlMDJhMmMyODI5ZmY4OTYwMjU1YjcxNDE1ZmIz
MiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pT
VGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMTcwNCw5ICsxNzA0LDExNCBAQCB0
ZXN0L2ludGw0MDIvTG9jYWxlL2xpa2VseS1zdWJ0YWdzLmpzOgogdGVzdC9pbnRsNDAyL0xvY2Fs
ZS9wcm90b3R5cGUvbWluaW1pemUvcmVtb3ZpbmctbGlrZWx5LXN1YnRhZ3MtZmlyc3QtYWRkcy1s
aWtlbHktc3VidGFncy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1p
emUoKSBzaG91bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrss
IMKrZW7CuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6ICJ1bmQi
Lm1pbmltaXplKCkgc2hvdWxkIGJlICJlbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS12YS1w
b3NpeMK7LCDCq2VuwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1kZS1ERS5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtZW4tVVMu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5F
MMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2ll
bnRpZmljLWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvZW5n
aW5lZXJpbmctc2NpZW50aWZpYy1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJworICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrss
IMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9OdW1iZXJG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9udW1iZXJpbmctc3lzdGVtcy5qczoKICAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogbnVtYmVyaW5nU3lzdGVtOiBhZGxtLCBkaWdpdDogMCBFeHBlY3RlZCBT
YW1lVmFsdWUowqswwrssIMKr8J6lkMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogbnVtYmVyaW5nU3lzdGVtOiBhZGxtLCBkaWdpdDogMCBFeHBlY3RlZCBTYW1l
VmFsdWUowqswwrssIMKr8J6lkMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZv
cm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWRlLURFLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstMCwwMMKgJMK7LCDC
qzAsMDDCoCTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqy0wLDAwwqAkwrssIMKrMCwwMMKgJMK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1
cnJlbmN5LWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4wMCnCuywgwqskMC4wMMK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4w
MCnCuywgwqskMC4wMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9w
cm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWtvLUtSLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQw
LjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVu
Y3ktemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAu
MDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdC9zaWduRGlzcGxheS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAu
MDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJv
KSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1lbi1VUy5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7
LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBl
L2Zvcm1hdC9zaWduRGlzcGxheS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
LTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRa
ZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1rby1LUi5q
czoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqst
MMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90
eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1yb3VuZGluZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsrMMK7LCDCqzDC
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dC9zaWduRGlzcGxheS16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAw
MSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBF
eHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC91bml0LWphLUpQLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvmmYLpgJ8tOTg344Kt44Ot44Oh
44O844OI44OrwrssIMKr5pmC6YCfIC05ODcg44Kt44Ot44Oh44O844OI44OrwrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvm
mYLpgJ8tOTg344Kt44Ot44Oh44O844OI44OrwrssIMKr5pmC6YCfIC05ODcg44Kt44Ot44Oh44O8
44OI44OrwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXQvdW5pdC16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrLTk4N+WFrOmHjC/lsI/mmYLCuywgwqstOTg3IOWFrOmHjC/lsI/mmYLC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy05ODflhazph4wv5bCP5pmCwrssIMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1Bh
cnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7
LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBl
L2Zvcm1hdFRvUGFydHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1lbi1VUy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1l
VmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWphLUpQLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVu
Z3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlm
aWMta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2lu
ZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1
ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5n
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJp
bmctc2NpZW50aWZpYy16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmlu
aXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0g
ZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0
cy9zaWduRGlzcGxheS1jdXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzXCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3Ro
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJl
bmN5LWVuLVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0
aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3ktamEtSlAuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0
cy9zaWduRGlzcGxheS1jdXJyZW5jeS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3Ro
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJl
bmN5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0
aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7
LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBl
L2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
MsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0w
LjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHC
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dFRvUGFydHMvc2lnbkRpc3BsYXktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDC
qzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEg
KGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFy
dHMvc2lnbkRpc3BsYXkta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAw
MDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykg
dG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2Vw
dFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2ln
bkRpc3BsYXktemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4
Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8p
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvdW5pdC1qYS1K
UC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzbCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywg
wqs2wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXRUb1BhcnRzL3VuaXQtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs0wrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqszwrssIMKrNMK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL1Jl
bGF0aXZlVGltZUZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpz
OgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFu
Z2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
ICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBS
YW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxs
Jwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403079</attachid>
            <date>2020-06-29 10:27:54 -0700</date>
            <delta_ts>2020-06-29 10:27:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209774-20200629102753.patch</filename>
            <type>text/plain</type>
            <size>99914</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi45YjhkY2E4YmZhOWZjZDZi
YjBlMTlhMGFkMzFjZGIyZTk2OWFkYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0
LiBUaGlzIHVwZGF0ZSB3YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVD
TUEtNDAyIHNwZWMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5n
IGZlYXR1cmVzIGluIHRoZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlv
bi4gQWRkaW5nICJ1bml0IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5Iiwg
Im5vdGF0aW9uIiwgYW5kICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNh
biBub3cgaGFuZGxlICJ1bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVy
ZXMsIHdlIG5lZWQgdG8gdXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFm
dGVyIElDVSA2NCAod2hpbGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAg
Y3JpdGljYWwgcGFydCBhcmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBV
TnVtYmVyRm9ybWF0IGJhc2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwg
NjQpIHNpbmNlIFdlYktpdAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQg
b3IgbGF0ZXIsIEludGwuTnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVy
Rm9ybWF0dGVyLCBhbmQgaW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50
bC1udW1iZXJmb3JtYXQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lE
aWdpdHMpOgorICAgICAgICAoSlNDOjpzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAgICAo
SlNDOjp3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
c3R5bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6SW50bEZp
ZWxkSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
UGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBs
dXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVFbnVtZXJhdGlvbkRl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVy
OjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJzaW9uKToKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFj
MTE3MmM2ZTA0ZWFiODM4OGMyMjgwZGE1MDg0M2E2M2JkZC4uMGI1ZGI1YzI5OWRiZjNmMTU4Mzc1
MjgwYWEzZTBhY2NmMWEzOTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3
ODksNiArMTc4OSw3IEBACiAJCUUzMjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVB
MzFEQTY0NDM5MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8q
IERGR1NuaXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8q
IEZUTFNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmgg
Ki87IH07CisJCUUzMjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMy
MzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi87IH07
CiAJCUUzMjU5NTY0MjFGREEyQzkwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTk1NjMy
MUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmggKi87IH07CiAJCUUz
MjVBMzYwMjIyMTE1OTAwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QTM1RjIyMjExNThB
MDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oICovOyB9OwogCQlFMzI4MkJCQjFG
RTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJF
cnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDk0NCw2ICs0OTQ1LDcgQEAKIAkJRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERG
R1NuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU25p
cHBldFBhcmFtcy5oOyBwYXRoID0gZGZnL0RGR1NuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTQxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQ
YXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU25pcHBl
dFBhcmFtcy5jcHA7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzMjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJh
bXMuaDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1OTU2MzIxRkRBMkM4MDA4RURDOUMgLyogUmVnRXhw
R2xvYmFsRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVn
RXhwR2xvYmFsRGF0YUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
NUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MjcyLDYgKzcyNzQsNyBAQAogCQkJCUExRDc5MkY3MUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0
QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTFE
NzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICov
LAorCQkJCUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5l
cy5oICovLAogCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCAqLywKQEAgLTk3NTUsNiArOTc1OCw3IEBACiAJCQkJQTFENzkyRkQx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIzMTE2OTI0
QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkJCRkYy
MUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGYwMGE2NmIw
ODIyNzVmNTBjMjBmZmY2YWY4MjYxM2I2OGFlMzBhZTkuLjViOGJlYWMyOTI0YTI4NDFiOWFjOGU3
MWMyNmQ4MDZiYmY5ZDBhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNDUsMTIgKzQ0LDYgQEAgY29uc3RleHByIHNpemVfdCBjYXNlRmlyc3RJbmRleCA9IDE7CiBj
b25zdGV4cHIgc2l6ZV90IG51bWVyaWNJbmRleCA9IDI7CiB9CiAKLXZvaWQgSW50bENvbGxhdG9y
OjpVQ29sbGF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVDb2xsYXRvciogY29sbGF0b3IpIGNvbnN0
Ci17Ci0gICAgaWYgKGNvbGxhdG9yKQotICAgICAgICB1Y29sX2Nsb3NlKGNvbGxhdG9yKTsKLX0K
LQogSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yKHZtLCBzdHJ1
Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApp
bmRleCA2OWNiMzIzZTIxNGQwY2I1YmQ2YjczZDEzMDNlOWYyNzQzZjIyZjYzLi5jMjBjMjA2NjJj
ZDU1NDRjNzIzNjBjZGI1YTk2YWVkNzA5ZDMwNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJKU09iamVjdC5oIgotCi1zdHJ1Y3QgVUNvbGxhdG9yOworI2luY2x1ZGUg
PHVuaWNvZGUvdWNvbC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03NCw5ICs3NCw3IEBAIGNsYXNzIEludGxDb2xsYXRv
ciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIFNlbnNp
dGl2aXR5IDogdWludDhfdCB7IEJhc2UsIEFjY2VudCwgQ2FzZSwgVmFyaWFudCB9OwogICAgIGVu
dW0gY2xhc3MgQ2FzZUZpcnN0IDogdWludDhfdCB7IFVwcGVyLCBMb3dlciwgRmFsc2UgfTsKIAot
ICAgIHN0cnVjdCBVQ29sbGF0b3JEZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVD
b2xsYXRvciopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVUNvbGxhdG9yRGVsZXRlciA9IElD
VURlbGV0ZXI8dWNvbF9jbG9zZT47CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVzYWdlU3Ry
aW5nKFVzYWdlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNlbnNpdGl2aXR5U3RyaW5nKFNl
bnNpdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZmJjMzY3Y2Y0ZmI0Mjk4YWRmNjExZDEyYzZhZTJm
NDY3NjEzODUuLjliNzE4NWJiYWVlZjI4ODllMjVhZjZlYTU0ODFiODYwMDI5MWZkNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcApAQCAtNTAsMTIgKzUwLDYgQEAgY29uc3RleHByIHNpemVfdCBob3VyQ3ljbGVJbmRleCA9
IDE7CiBjb25zdGV4cHIgc2l6ZV90IG51bWJlcmluZ1N5c3RlbUluZGV4ID0gMjsKIH0KIAotdm9p
ZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0
ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKLXsKLSAgICBpZiAoZGF0ZUZvcm1hdCkKLSAgICAg
ICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKLX0KLQogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
ICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBz
dHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuaAppbmRleCA5ZDI2NzFjODljMjRhMDYyNzYzYmVjY2NjYzg0ODJkZjJjNzU3
N2VkLi5mZTJkMzE0MDgxY2NmODY2ODMwNjk5ZWZlNzE5NTQzYWExMGNmY2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2Rl
L3VkYXQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNzksOSArODAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZWNvbmQg
OiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRp
bWVab25lTmFtZSA6IHVpbnQ4X3QgeyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCi0gICAgc3RydWN0
IFVEYXRlRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVRGF0ZUZvcm1h
dCopIGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVURhdGVGb3JtYXREZWxldGVyID0gSUNVRGVs
ZXRlcjx1ZGF0X2Nsb3NlPjsKIAogICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0
IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vl
a2RheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5Mzgu
LjY5OWRkMDY2MjQ1MDdiMTRhMzY3MTkyZjM3ZDM0ODMyODhkMjEwZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogCiAjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCkBAIC00Miw2ICs0Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9y
bWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAKIG5h
bWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIq
IHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworY29uc3RleHByIGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKQEAgLTQ5
LDEyICs1MSw2IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIHNpemVfdCBz
aXplOwogfTsKIAotdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNvbnN0Ci17Ci0gICAgaWYg
KG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwotfQotCiBJ
bnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJl
ckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTExOSw3ICsxMTUsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgLy8g
MTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3VycmVuY3lEaWdpdHMgKGN1cnJlbmN5KQog
ICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kgYW5kIGZ1bmRzIGNvZGUgbGlzdCBjb250
YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNvZGUsCiAgICAgLy8gdGhlbiByZXR1cm4g
dGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVuY3kgZnJvbSB0
aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHVuc2ln
bmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5TWlub3JVbml0c1tdID0gewogICAg
ICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJRiIsIDAgfSwKICAgICAgICAgeyAiQllS
IiwgMCB9LApAQCAtMTUzLDYgKzE0OSwxMTUgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVDdXJy
ZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQogICAgIHJldHVybiAyOwogfQogCisv
LyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4KK3N0cnVjdCBNZWFzdXJlVW5pdCB7Cisg
ICAgQVNDSUlMaXRlcmFsIHR5cGU7CisgICAgQVNDSUlMaXRlcmFsIHN1YlR5cGU7Cit9OworCitz
dGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmll
cihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgTWVh
c3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAgICAgeyAiYXJlYSJfcywgImFjcmUiX3Mg
fSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImNlbHNpdXMiX3Mg
fSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGltZXRlciJfcyB9LAorICAgICAgICB7ICJk
dXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7ICJhbmdsZSJfcywgImRlZ3JlZSJfcyB9
LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZhaHJlbmhlaXQiX3MgfSwKKyAgICAgICAg
eyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAi
Zm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJnYWxsb24iX3MgfSwKKyAgICAgICAg
eyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImdp
Z2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJncmFtIl9zIH0sCisgICAgICAgIHsg
ImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAiaG91ciJf
cyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNoIl9zIH0sCisgICAgICAgIHsgImRpZ2l0
YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxvYnl0ZSJf
cyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dyYW0iX3MgfSwKKyAgICAgICAgeyAibGVu
Z3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgImxpdGVyIl9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYml0Il9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtZXRlciJf
cyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlIl9zIH0sCisgICAgICAgIHsgImxlbmd0
aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisgICAgICAgIHsgInZvbHVtZSJfcywgIm1p
bGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAibWlsbGltZXRlciJfcyB9LAor
ICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vjb25kIl9zIH0sCisgICAgICAgIHsgImR1
cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibW9udGgi
X3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNlIl9zIH0sCisgICAgICAgIHsgImNvbmNl
bnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAicGV0YWJ5dGUi
X3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5kIl9zIH0sCisgICAgICAgIHsgImR1cmF0
aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJzdG9uZSJfcyB9LAor
ICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJfcyB9LAorICAgICAgICB7ICJkaWdpdGFs
Il9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJ3ZWVrIl9zIH0s
CisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3MgfSwKKyAgICAgICAgeyAiZHVyYXRpb24i
X3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6Omxvd2Vy
X2JvdW5kKHN0ZDo6YmVnaW4oc2ltcGxlVW5pdHMpLCBzdGQ6OmVuZChzaW1wbGVVbml0cyksIHVu
aXRJZGVudGlmaWVyLAorICAgICAgICBbXSAoY29uc3QgTWVhc3VyZVVuaXQmIHVuaXQsIFN0cmlu
Z1ZpZXcgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2lu
dENvbXBhcmUoU3RyaW5nVmlldyh1bml0LnN1YlR5cGUpLCB1bml0SWRlbnRpZmllcikgPCAwOwor
ICAgICAgICB9KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gc3RkOjplbmQoc2ltcGxlVW5pdHMpICYm
ICFXVEY6OmNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmlldyhpdGVyYXRvci0+c3ViVHlwZSksIHVu
aXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuICppdGVyYXRvcjsKKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworfQorCitzdHJ1Y3QgV2VsbEZvcm1lZFVuaXQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0IG51bWVyYXRvcikKKyAgICAgICAgOiBu
dW1lcmF0b3IobnVtZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBXZWxsRm9ybWVkVW5pdChN
ZWFzdXJlVW5pdCBudW1lcmF0b3IsIE1lYXN1cmVVbml0IGRlbm9taW5hdG9yKQorICAgICAgICA6
IG51bWVyYXRvcihudW1lcmF0b3IpCisgICAgICAgICwgZGVub21pbmF0b3IoZGVub21pbmF0b3Ip
CisgICAgeworICAgIH0KKworICAgIE1lYXN1cmVVbml0IG51bWVyYXRvcjsKKyAgICBPcHRpb25h
bDxNZWFzdXJlVW5pdD4gZGVub21pbmF0b3I7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8V2VsbEZv
cm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlm
aWVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaXN3ZWxsZm9ybWVk
dW5pdGlkZW50aWZpZXIKKyAgICBpZiAoYXV0byB1bml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJ
ZGVudGlmaWVyKHVuaXRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0
KHVuaXQudmFsdWUoKSk7CisKKyAgICAvLyBJZiB0aGUgc3Vic3RyaW5nICItcGVyLSIgZG9lcyBu
b3Qgb2NjdXIgZXhhY3RseSBvbmNlIGluIHVuaXRJZGVudGlmaWVyLCB0aGVuIHJldHVybiBmYWxz
ZS4KKyAgICBhdXRvIHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKKyAgICBhdXRvIHBvc2l0
aW9uID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOworICAgIGlmIChwb3NpdGlvbiA9PSBXVEY6
Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICh1bml0SWRl
bnRpZmllci5maW5kKHBlciwgcG9zaXRpb24gKyBwZXIubGVuZ3RoKCkpICE9IFdURjo6bm90Rm91
bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0
IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMgZmFsc2Us
IHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50aWZpZXIu
c3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlv
bmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKKyAgICBpZiAoIW51bWVyYXRvclVu
aXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBJZiB0aGUgcmVzdWx0
IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxz
ZSwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlm
aWVyLnN1YnN0cmluZyhwb3NpdGlvbiArIHBlci5sZW5ndGgoKSk7CisgICAgYXV0byBkZW5vbWlu
YXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoZGVub21pbmF0b3IpOwor
ICAgIGlmICghZGVub21pbmF0b3JVbml0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOworfQorCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0
MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2b2lkIEludGxOdW1iZXJGb3JtYXQ6Omlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKQEAgLTE5NywxNCArMzAyLDE5IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX251bWJlcmluZ1N5c3RlbSA9IHJlc3Vs
dC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVj
aW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJk
ZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVjaW1hbCIpOworICAg
IC8vIFNldE51bWJlckZvcm1hdFVuaXRPcHRpb25zKGludGxPYmplY3QsIG9wdGlvbnMpCisgICAg
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRudW1iZXJmb3JtYXR1bml0b3B0aW9u
cworCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJkZWNpbWFsIiwgInBlcmNl
bnQiLCAiY3VycmVuY3kiLCAidW5pdCIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1h
bFwiLCBcInBlcmNlbnRcIiwgXCJjdXJyZW5jeVwiLCBvciBcInVuaXRcIiIsICJkZWNpbWFsIik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBpZiAoc3R5bGVT
dHJpbmcgPT0gImRlY2ltYWwiKQorICAgIGlmIChzdHlsZVN0cmluZyA9PSAiZGVjaW1hbCJfcykK
ICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwotICAgIGVsc2UgaWYgKHN0eWxlU3Ry
aW5nID09ICJwZXJjZW50IikKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAicGVyY2VudCJf
cykKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpQZXJjZW50OwotICAgIGVsc2UgaWYgKHN0eWxl
U3RyaW5nID09ICJjdXJyZW5jeSIpCisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gImN1cnJl
bmN5Il9zKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkN1cnJlbmN5OworICAgIGVsc2UgaWYg
KHN0eWxlU3RyaW5nID09ICJ1bml0Il9zKQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6OlVuaXQ7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMjEyLDcgKzMy
Miw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7CiAgICAgICAgIGlm
IChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0
ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJyZW5jeSBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjI5LDYwICszMzksMjY2IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgICAgIGN1cnJlbmN5RGlnaXRzID0gY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGN1cnJlbmN5KTsK
ICAgICB9CiAKLSAgICBTdHJpbmcgY3VycmVuY3lEaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
dXJyZW5jeURpc3BsYXkiKSwgeyAiY29kZSIsICJzeW1ib2wiLCAibmFtZSIgfSwgImN1cnJlbmN5
RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwgb3IgXCJuYW1lXCIi
LCAic3ltYm9sIik7CisgICAgU3RyaW5nIGN1cnJlbmN5RGlzcGxheVN0cmluZyA9IGludGxTdHJp
bmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY3VycmVuY3lEaXNwbGF5IiksIHsgImNvZGUiLCAic3ltYm9sIiwgIm5hcnJvd1N5bWJvbCIs
ICJuYW1lIiB9LCAiY3VycmVuY3lEaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiY29kZVwiLCBcInN5
bWJvbFwiLCBcIm5hcnJvd1N5bWJvbFwiLCBvciBcIm5hbWVcIiIsICJzeW1ib2wiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgewotICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJj
b2RlIikKKyAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAiY29kZSJfcykKICAg
ICAgICAgICAgIG1fY3VycmVuY3lEaXNwbGF5ID0gQ3VycmVuY3lEaXNwbGF5OjpDb2RlOwotICAg
ICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gInN5bWJvbCIpCisgICAgICAg
IGVsc2UgaWYgKGN1cnJlbmN5RGlzcGxheVN0cmluZyA9PSAic3ltYm9sIl9zKQogICAgICAgICAg
ICAgbV9jdXJyZW5jeURpc3BsYXkgPSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDsKLSAgICAgICAg
ZWxzZSBpZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYW1lIikKKyAgICAgICAgZWxzZSBp
ZiAoY3VycmVuY3lEaXNwbGF5U3RyaW5nID09ICJuYXJyb3dTeW1ib2wiX3MpCisgICAgICAgICAg
ICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOworICAg
ICAgICBlbHNlIGlmIChjdXJyZW5jeURpc3BsYXlTdHJpbmcgPT0gIm5hbWUiX3MpCiAgICAgICAg
ICAgICBtX2N1cnJlbmN5RGlzcGxheSA9IEN1cnJlbmN5RGlzcGxheTo6TmFtZTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgbWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGln
aXRzIiksIDEsIDIxLCAxKTsKKyAgICBTdHJpbmcgY3VycmVuY3lTaWduU3RyaW5nID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjdXJyZW5jeVNpZ24iKSwgeyAic3RhbmRhcmQiLCAiYWNjb3VudGluZyIgfSwgImN1cnJl
bmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIgb3IgXCJhY2NvdW50aW5nXCIiLCAi
c3RhbmRhcmQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICBpZiAo
bV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgaWYgKGN1cnJlbmN5U2lnblN0
cmluZyA9PSAic3RhbmRhcmQiX3MpCisgICAgICAgICAgICBtX2N1cnJlbmN5U2lnbiA9IEN1cnJl
bmN5U2lnbjo6U3RhbmRhcmQ7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbmN5U2lnblN0cmluZyA9
PSAiYWNjb3VudGluZyJfcykKKyAgICAgICAgICAgIG1fY3VycmVuY3lTaWduID0gQ3VycmVuY3lT
aWduOjpBY2NvdW50aW5nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogMDsK
KyAgICBTdHJpbmcgdW5pdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdCIpLCB7IH0sIG51bGxwdHIsIG51bGxw
dHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgT3B0aW9u
YWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0OworICAgIGlmICghdW5pdC5pc051bGwo
KSkgeworICAgICAgICB3ZWxsRm9ybWVkVW5pdCA9IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcih1
bml0KTsKKyAgICAgICAgaWYgKCF3ZWxsRm9ybWVkVW5pdCkgeworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVk
IHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgbV91bml0ID0gdW5pdDsKKyAgICB9IGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlVu
aXQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQg
bXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICB1bnNp
Z25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRp
Z2l0cyIpLCAwLCAyMCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5n
IHVuaXREaXNwbGF5U3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7ICJzaG9ydCIs
ICJuYXJyb3ciLCAibG9uZyIgfSwgInVuaXREaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRc
IiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiLCAic2hvcnQiKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWlu
aW11bUZyYWN0aW9uRGlnaXRzOworICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpVbml0KSB7Cisg
ICAgICAgIGlmICh1bml0RGlzcGxheVN0cmluZyA9PSAic2hvcnQiX3MpCisgICAgICAgICAgICBt
X3VuaXREaXNwbGF5ID0gVW5pdERpc3BsYXk6OlNob3J0OworICAgICAgICBlbHNlIGlmICh1bml0
RGlzcGxheVN0cmluZyA9PSAibmFycm93Il9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9
IFVuaXREaXNwbGF5OjpOYXJyb3c7CisgICAgICAgIGVsc2UgaWYgKHVuaXREaXNwbGF5U3RyaW5n
ID09ICJsb25nIl9zKQorICAgICAgICAgICAgbV91bml0RGlzcGxheSA9IFVuaXREaXNwbGF5OjpM
b25nOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGlm
IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkKLSAgICAgICAgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgY3VycmVuY3lEaWdp
dHMpOwotICAgIGVsc2UgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OlBlcmNlbnQpCi0gICAgICAgIG1h
eGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0gICAg
ZWxzZQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWlu
aW11bUZyYWN0aW9uRGlnaXRzLCAzdSk7CisgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0
cyA6IDA7CisgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IChtX3N0
eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURpZ2l0cyA6IChtX3N0eWxlID09IFN0
eWxlOjpQZXJjZW50KSA/IDAgOiAzOwogCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgU3RyaW5nIG5v
dGF0aW9uU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCB7ICJzdGFuZGFyZCIsICJzY2ll
bnRpZmljIiwgImVuZ2luZWVyaW5nIiwgImNvbXBhY3QiIH0sICJub3RhdGlvbiBtdXN0IGJlIGVp
dGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIsIG9yIFwi
Y29tcGFjdFwiIiwgInN0YW5kYXJkIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRp
Z2l0czsKKyAgICBpZiAobm90YXRpb25TdHJpbmcgPT0gInN0YW5kYXJkIl9zKQorICAgICAgICBt
X25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpTdGFuZGFyZDsKKyAgICBlbHNlIGlmIChub3RhdGlv
blN0cmluZyA9PSAic2NpZW50aWZpYyJfcykKKyAgICAgICAgbV9ub3RhdGlvbiA9IEludGxOb3Rh
dGlvbjo6U2NpZW50aWZpYzsKKyAgICBlbHNlIGlmIChub3RhdGlvblN0cmluZyA9PSAiZW5naW5l
ZXJpbmciX3MpCisgICAgICAgIG1fbm90YXRpb24gPSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5n
OworICAgIGVsc2UgaWYgKG5vdGF0aW9uU3RyaW5nID09ICJjb21wYWN0Il9zKQorICAgICAgICBt
X25vdGF0aW9uID0gSW50bE5vdGF0aW9uOjpDb21wYWN0OworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0aW9uKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgSlNWYWx1ZSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7
CisgICAgU3RyaW5nIGNvbXBhY3REaXNwbGF5ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIp
LCB7ICJzaG9ydCIsICJsb25nIiB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJz
aG9ydFwiIG9yIFwibG9uZ1wiIiwgInNob3J0Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGln
aXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERl
ZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0
cyIpLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIG1fbWluaW11bVNpZ25pZmljYW50
RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICBpZiAobV9ub3Rh
dGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGNvbXBhY3REaXNw
bGF5ID09ICJzaG9ydCJfcykKKyAgICAgICAgICAgIG1fY29tcGFjdERpc3BsYXkgPSBDb21wYWN0
RGlzcGxheTo6U2hvcnQ7CisgICAgICAgIGVsc2UgaWYgKGNvbXBhY3REaXNwbGF5ID09ICJsb25n
Il9zKQorICAgICAgICAgICAgbV9jb21wYWN0RGlzcGxheSA9IENvbXBhY3REaXNwbGF5OjpMb25n
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKICAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV91c2VHcm91
cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAorICAgIFN0cmluZyBzaWdu
RGlzcGxheSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyAiYXV0byIsICJuZXZlciIsICJh
bHdheXMiLCAiZXhjZXB0WmVybyIgfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0
b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIiwgImF1dG8iKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChzaWduRGlz
cGxheSA9PSAiYXV0byJfcykKKyAgICAgICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpB
dXRvOworICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09ICJuZXZlciJfcykKKyAgICAgICAgbV9z
aWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpOZXZlcjsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxh
eSA9PSAiYWx3YXlzIl9zKQorICAgICAgICBtX3NpZ25EaXNwbGF5ID0gU2lnbkRpc3BsYXk6OkFs
d2F5czsKKyAgICBlbHNlIGlmIChzaWduRGlzcGxheSA9PSAiZXhjZXB0WmVybyJfcykKKyAgICAg
ICAgbV9zaWduRGlzcGxheSA9IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOworICAgIGVsc2UKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5l
ZC4gQ29uZmlndXJlIGZvcm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9S
TUFUVEVSKQorICAgIC8vIENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25m
aWd1cmUgVU51bWJlckZvcm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZAorCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOwor
CisgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAg
ICAgLy8gTm8gc2tlbGV0b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0
eWxlOjpQZXJjZW50OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBl
cmNlbnQgc2NhbGUvMTAwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJl
bmN5OiB7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kv
Iik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAg
ICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6Q29kZToKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlv
bi4gRG8gbm90IHNwZWNpZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgU3R5bGU6OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVt
IHRha2VzIG9uZSByZXF1aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVu
aXQgdG8gYmUgZm9ybWF0dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIg
aXMgcmVxdWlyZWQ6IGJvdGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwg
bGVuZ3RoLW1ldGVyKS4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQjdW5pdAorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1l
YXN1cmUtdW5pdC8iKTsKKyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVu
aXQtPm51bWVyYXRvcjsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JV
bml0LnR5cGUsICctJywgbnVtZXJhdG9yVW5pdC5zdWJUeXBlKTsKKyAgICAgICAgaWYgKGF1dG8g
ZGVub21pbmF0b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IpIHsKKyAg
ICAgICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFs
dWUoKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1l
YXN1cmUtdW5pdC8iKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21p
bmF0b3JVbml0LnR5cGUsICctJywgZGVub21pbmF0b3JVbml0LnN1YlR5cGUpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5p
dC13aWR0aAorICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBV
bml0RGlzcGxheTo6U2hvcnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAn
KicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBv
ZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRz
OyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRj
aCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIg
LiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0g
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFy
c2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91
bmRpbmc6CisgICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25v
dGF0aW9uCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246
OlN0YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50
aWZpYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmlj
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAg
c3dpdGNoIChtX2NvbXBhY3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6
OlNob3J0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21w
YWN0LXNob3J0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlz
cGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
Y29tcGFjdC1sb25nIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1
L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNzaWduLWRpc3BsYXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEg
cGFydCBvZiBTaWduRGlzcGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1f
c3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2ln
bjo6QWNjb3VudGluZyk7CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBT
aWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNp
Z24tYXV0byIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYg
KHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNl
QWNjb3VudGluZykKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
c2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJ
bnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9n
TG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBT
dHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JT
a2VsZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0
KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0
eWxlIHN0eWxlID0gVU5VTV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNh
c2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0yOTksMTUgKzYxNSw0NCBAQCB2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgogICAgICAgICAg
ICAgc3R5bGUgPSBVTlVNX0NVUlJFTkNZOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNV
IHZlcnNpb24iX3MpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFtZToKICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5jeVNp
Z24pIHsKKyAgICAgICAgY2FzZSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFs
aXplIE51bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0
aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBjYXNlIFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNl
IHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24i
X3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7
CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5n
aW5lZXJpbmc6CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1i
ZXJGb3JtYXQgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtl
ZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KG1fc2lnbkRpc3BsYXkpIHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICBjYXNlIFNpZ25EaXNwbGF5
OjpBbHdheXM6CisgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51
bWJlckZvcm1hdCBzaW5jZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlu
a2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMzI0LDQwICs2NjksNTggQEAgdm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAoIW1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSB7CisKKyAgICBzd2l0Y2ggKG1f
cm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0
czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
TUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJ
R0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklGSUNBTlRfRElHSVRTX1VT
RUQsIHRydWUpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQo
KSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVN
X01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
aW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJ
TkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOworI2Vu
ZGlmCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsK
LQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7Cisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VSVChtX251bWJlckZvcm1h
dHRlcik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1h
dHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgdW51bWZf
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7
CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9y
bWF0LmdldCgpLCB2YWx1ZSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwotCisjZW5kaWYKICAgICByZXR1cm4g
anNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkgY29uc3QKIHsK
LSAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAt
MzY4LDEwICs3MzEsMjQgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKQogICAgIGF1dG8qIHJhd1N0
cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzOCgp
KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKKyAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4o
dW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVt
YmVyRm9ybWF0dGVyLmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVk
TnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZm
ZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CisjZWxzZQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0
cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9z
KTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9
CiAKQEAgLTM4NCw2ICs3NjEsOCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5
bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAicGVyY2VudCJfczsKICAgICBj
YXNlIFN0eWxlOjpDdXJyZW5jeToKICAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKKyAgICBj
YXNlIFN0eWxlOjpVbml0OgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKQEAg
LTM5Niw2ICs3NzUsOCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lE
aXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwogICAgICAgICByZXR1cm4g
ImNvZGUiX3M7CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OlN5bWJvbDoKICAgICAgICAgcmV0
dXJuICJzeW1ib2wiX3M7CisgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoK
KyAgICAgICAgcmV0dXJuICJuYXJyb3dTeW1ib2wiX3M7CiAgICAgY2FzZSBDdXJyZW5jeURpc3Bs
YXk6Ok5hbWU6CiAgICAgICAgIHJldHVybiAibmFtZSJfczsKICAgICB9CkBAIC00MDMsNiArNzg0
LDc2IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJp
bmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6bm90YXRpb25TdHJp
bmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQoreworICAgIHN3aXRjaCAobm90YXRpb24pIHsKKyAg
ICBjYXNlIEludGxOb3RhdGlvbjo6U3RhbmRhcmQ6CisgICAgICAgIHJldHVybiAic3RhbmRhcmQi
X3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM6CisgICAgICAgIHJldHVybiAi
c2NpZW50aWZpYyJfczsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAg
ICAgIHJldHVybiAiZW5naW5lZXJpbmciX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkNvbXBh
Y3Q6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbiBj
dXJyZW5jeVNpZ24pCit7CisgICAgc3dpdGNoIChjdXJyZW5jeVNpZ24pIHsKKyAgICBjYXNlIEN1
cnJlbmN5U2lnbjo6U3RhbmRhcmQ6CisgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CisgICAg
Y2FzZSBDdXJyZW5jeVNpZ246OkFjY291bnRpbmc6CisgICAgICAgIHJldHVybiAiYWNjb3VudGlu
ZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5p
dERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5pdERpc3BsYXkpCit7CisgICAgc3dpdGNoICh1
bml0RGlzcGxheSkgeworICAgIGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgorICAgICAgICByZXR1
cm4gInNob3J0Il9zOworICAgIGNhc2UgVW5pdERpc3BsYXk6Ok5hcnJvdzoKKyAgICAgICAgcmV0
dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKKyAgICAgICAgcmV0
dXJuICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSBjb21wYWN0RGlzcGxheSkK
K3sKKyAgICBzd2l0Y2ggKGNvbXBhY3REaXNwbGF5KSB7CisgICAgY2FzZSBDb21wYWN0RGlzcGxh
eTo6U2hvcnQ6CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBDb21wYWN0RGlz
cGxheTo6TG9uZzoKKyAgICAgICAgcmV0dXJuICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxh
eSBzaWduRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHNpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBT
aWduRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgU2ln
bkRpc3BsYXk6Ok5ldmVyOgorICAgICAgICByZXR1cm4gIm5ldmVyIl9zOworICAgIGNhc2UgU2ln
bkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CisgICAgY2FzZSBT
aWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1i
ZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJG
b3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogewpAQCAtNDExLDE5ICs4NjIsMzggQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJl
c29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2
bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwotICAgIGlmIChtX3N0eWxl
ID09IFN0eWxlOjpDdXJyZW5jeSkgeworICAgIHN3aXRjaCAobV9zdHlsZSkgeworICAgIGNhc2Ug
U3R5bGU6OkRlY2ltYWw6CisgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgbV9jdXJyZW5jeSkpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBjdXJyZW5jeURpc3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3BsYXkpKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1cnJlbmN5U2lnbiIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5U2lnblN0cmlu
ZyhtX2N1cnJlbmN5U2lnbikpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHlsZTo6VW5p
dDoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidW5pdCIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdW5pdCkpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlz
cGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHVuaXREaXNwbGF5U3RyaW5nKG1fdW5pdERp
c3BsYXkpKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiks
IGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRz
IiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIEFTU0VSVChtX21heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiKSwganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKICAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11
bVNpZ25pZmljYW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
KSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiks
IGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOworICAgIGlmIChtX25vdGF0aW9uID09
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOworICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25E
aXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWdu
RGlzcGxheSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtNDMyLDcgKzkwMiw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVu
Y3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsK
IH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVU5V
TV9JTlRFR0VSX0ZJRUxEOgpAQCAtNDQ1LDIwICs5MTUsMzEgQEAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUp
CiAgICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7CiAgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQ
QVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVN
X0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRv
ciJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJu
ICJleHBvbmVudE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6Cisg
ICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOwogICAgIGNhc2UgVU5VTV9HUk9VUElO
R19TRVBBUkFUT1JfRklFTEQ6CiAgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CiAgICAgY2FzZSBV
TlVNX0NVUlJFTkNZX0ZJRUxEOgogICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOwogICAgIGNh
c2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICByZXR1cm4gInBlcmNlbnRTaWduIl9zOwor
ICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVu
aXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMKKyAgICAgICAgcmV0dXJu
IChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJw
ZXJjZW50U2lnbiJfczsKICAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJu
IHZhbHVlIDwgMCA/ICJtaW51c1NpZ24iX3MgOiAicGx1c1NpZ24iX3M7CisgICAgICAgIHJldHVy
biBzdGQ6OnNpZ25iaXQodmFsdWUpID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgY2FzZSBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9zOworICAgIGNhc2UgVU5VTV9DT01QQUNU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisjZW5kaWYKICAgICAvLyBUaGVz
ZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0
aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgogICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9u
J3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24gcGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQg
YW4gInVua25vd24iLgogICAgIGNhc2UgVU5VTV9QRVJNSUxMX0ZJRUxEOgotICAgIGNhc2UgVU5V
TV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklF
TEQ6Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxEOgogICAgIC8vIEFueSBuZXdlciBhZGRp
dGlvbnMgdG8gdGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25z
aWRlcmVkIGFuICJ1bmtub3duIiBwYXJ0LgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAi
dW5rbm93biJfczsKQEAgLTQ2Niw3ICs5NDcsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRU
eXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIGRvdWJsZSB2YWx1ZSkKICAgICBy
ZXR1cm4gInVua25vd24iX3M7CiB9CiAKLXZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9y
LCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHls
ZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxk
SXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ3OCw3ICs5NTksMTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmwKICAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkLCAzMj4gZmllbGRzKHN0cmlu
Z0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKICAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwogICAg
IGludDMyX3QgZW5kSW5kZXggPSAwOwotICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9zaXRl
cl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5l
eHQoYmVnaW5JbmRleCwgZW5kSW5kZXgsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgd2hpbGUgKGZpZWxkVHlwZSA+PSAwKSB7CiAgICAgICAgIHNpemVfdCBz
aXplID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OwogICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2lu
SW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7CkBAIC00ODYsNyArOTcyLDExIEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsCiAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0gc2l6ZSkK
ICAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQgeyBmaWVs
ZFR5cGUsIHNpemUgfTsKICAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRwb3Np
dGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOworICAgICAgICBmaWVs
ZFR5cGUgPSBpdGVyYXRvci5uZXh0KGJlZ2luSW5kZXgsIGVuZEluZGV4LCBzdGF0dXMpOworICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3NpdGlvbiBp
dGVyYXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9z
KTsKQEAgLTUwMCw3ICs5OTAsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFy
dHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAogICAgICAgICBh
dXRvIGZpZWxkVHlwZSA9IGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGU7CiAgICAgICAgIHdoaWxl
IChjdXJyZW50SW5kZXggPCBzdHJpbmdMZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0udHlw
ZSA9PSBmaWVsZFR5cGUpCiAgICAgICAgICAgICArK2N1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0
byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmlu
ZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxk
VHlwZSksIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0
ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJp
bmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKICAgICAg
ICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4
LCBjdXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICBwYXJ0LT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKQEAgLTUxNSw4ICsxMDA1
LDYgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpTVmFsdWUgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFs
dWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKQEAgLTUyNiw5ICsxMDE0LDI4IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwogCiAgICAgVmVjdG9yPFVDaGFy
LCAzMj4gcmVzdWx0OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBBU1NF
UlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVt
Zl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZv
cm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAg
ICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJp
bmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHVudW1mX3Jlc3VsdEdldEFs
bEZpZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJlci5nZXQoKSwgZmllbGRJdHIuZ2V0KCksICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfcyk7CisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsK
KyNlbHNlCisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICBJbnRsRmll
bGRJdGVyYXRvciBpdGVyYXRvcigqZmllbGRJdHIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogCkBAIC01MzYsNyArMTA0Myw3IEBAIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDQz
MDRiMjJhOGM2YTUxMWY3NGUyYmRjYjA1Mzg4ZDViNjViNzM0NzYuLmVmZGEzOWUxNzM5ZDE4OWNj
YzljMWZjMzYwYjU3MWM0MGU1MWZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDExICsyOCwyOCBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1C
RVJfRk9STUFUVEVSKQorLy8gVU5VTV9DT01QQUNUX0ZJRUxEIGFuZCBVTlVNX01FQVNVUkVfVU5J
VF9GSUVMRCBhcmUgYXZhaWxhYmxlIGFmdGVyIElDVSA2NC4KKyNpZiBVX0lDVV9WRVJTSU9OX01B
Sk9SX05VTSA+PSA2NAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9GT1JNQVRURVIgMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRl
IDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiAKK2Vu
dW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2ln
bmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRp
b24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKQEAgLTY0LDcgKzgxLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBEZWNpbWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZv
aWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpT
U3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5v
dGF0aW9uKTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CkBAIC03MywyMiArOTcsMzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CiAKLSAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5IH07Ci0gICAgZW51bSBjbGFzcyBD
dXJyZW5jeURpc3BsYXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYW1lIH07Ci0KLSAgICBz
dHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwotICAgIH07CisgICAgZW51bSBjbGFzcyBDdXJyZW5jeURpc3Bs
YXkgOiB1aW50OF90IHsgQ29kZSwgU3ltYm9sLCBOYXJyb3dTeW1ib2wsIE5hbWUgfTsKKyAgICBl
bnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9
OworICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywg
TG9uZyB9OworICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5l
dmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5
bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5
U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5j
eVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKKyAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBt
X2xvY2FsZTsKICAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CiAgICAgU3RyaW5nIG1fY3Vy
cmVuY3k7CisgICAgU3RyaW5nIG1fdW5pdDsKICAgICB1bnNpZ25lZCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwpAQCAtOTYsNyAr
MTMxLDEzIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07
CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNw
bGF5IG1fY3VycmVuY3lEaXNwbGF5OworICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsK
KyAgICBVbml0RGlzcGxheSBtX3VuaXREaXNwbGF5OworICAgIENvbXBhY3REaXNwbGF5IG1fY29t
cGFjdERpc3BsYXk7CisgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246
OlN0YW5kYXJkIH07CisgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKICAgICBib29sIG1f
dXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYThhN2FmMWNkMjM1NTFlNzQwMTE1
YjQ4NTMxZDBmNmQ3ZDhhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0wLDAgKzEsMTA4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+Cit2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bEluc3RhbmNlLCBK
U09iamVjdCogb3B0aW9ucywgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uIG5vdGF0
aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdl
ckRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisKKyAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwor
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiksIDEs
IDIxLCAxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUZyYWN0aW9uRGlnaXRzIiksIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCA9IHN0ZDo6bWF4KG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9u
RGlnaXRzLCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzQWN0dWFsRGVmYXVsdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQ7Cit9CisKK2NsYXNzIEludGxGaWVsZEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnRsRmllbGRJdGVyYXRvcik7CisKKyAgICBleHBsaWNpdCBJbnRsRmll
bGRJdGVyYXRvcihVRmllbGRQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvcikKKyAgICAgICAgOiBt
X2l0ZXJhdG9yKGl0ZXJhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IG5leHQoaW50
MzJfdCYgYmVnaW5JbmRleCwgaW50MzJfdCYgZW5kSW5kZXgsIFVFcnJvckNvZGUmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHVmaWVsZHBvc2l0ZXJfbmV4dCgmbV9pdGVyYXRvciwgJmJlZ2luSW5k
ZXgsICZlbmRJbmRleCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFVGaWVsZFBvc2l0aW9uSXRl
cmF0b3ImIG1faXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGM0OTlh
ZGExOWYzYWQ0YzJmODMwYWRjM2M1M2I4ZDVhNmMxZjU3NmYuLmU5ZDMyYTI4ZDBjYmQ3OWY2NDEz
Zjc5MjU4MDEyMDYxMDE1NzJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgogCisjaW5jbHVkZSAiSW50bE51
bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC0zNSwyNSAr
MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxl
czo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVsZXMpIH07CiAKLXZvaWQgSW50bFBsdXJh
bFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyogcGx1
cmFsUnVsZXMpIGNvbnN0Ci17Ci0gICAgaWYgKHBsdXJhbFJ1bGVzKQotICAgICAgICB1cGxydWxl
c19jbG9zZShwbHVyYWxSdWxlcyk7Ci19Ci0KLXZvaWQgSW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVy
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQpIGNv
bnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9zZShudW1iZXJG
b3JtYXQpOwotfQotCi1zdHJ1Y3QgVUVudW1lcmF0aW9uRGVsZXRlciB7Ci0gICAgdm9pZCBvcGVy
YXRvcigpKFVFbnVtZXJhdGlvbiogZW51bWVyYXRpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAoZW51bWVyYXRpb24pCi0gICAgICAgICAgICB1ZW51bV9jbG9zZShlbnVtZXJhdGlvbik7Ci0g
ICAgfQotfTsKK3VzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVlbnVtX2Ns
b3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1cmFsUnVsZXM6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTI1LDM0ICsxMDgsOCBAQCB2b2lkIEludGxQ
bHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5hbCIgPyBUeXBlOjpPcmRpbmFsIDogVHlw
ZTo6Q2FyZGluYWw7CiAKLSAgICB1bnNpZ25lZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IGludGxO
dW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwgMSwgMjEsIDEpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1p
bmltdW1JbnRlZ2VyRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCA9IDA7Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
c0RlZmF1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAg
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICB1
bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZy
YWN0aW9uRGlnaXRzLCAzdSk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0g
aW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwgbWluaW11bUZyYWN0aW9uRGlnaXRz
LCAyMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7CisgICAgc2V0TnVtYmVyRm9ybWF0
RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0
aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LSAgICBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLQot
ICAgIEpTVmFsdWUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmlj
YW50RGlnaXRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0K
LSAgICBKU1ZhbHVlIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0
KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZp
Y2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
Ci0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8
ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNp
Z25pZmljYW50RGlnaXRzIiksIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGln
aXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUws
IG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsK
QEAgLTE2MSwxNCArMTE4LDIwIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1
cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpIHsKLSAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fU0lHTklG
SUNBTlRfRElHSVRTX1VTRUQsIHRydWUpOwotICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251
bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKTsKLSAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBzd2l0Y2ggKG1f
cm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0
czoKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
TUlOX0lOVEVHRVJfRElHSVRTLCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzKTsKICAgICAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX0ZSQUNUSU9OX0RJ
R0lUUywgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKKyAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJ
R05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOworICAgICAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNB
TlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTE5MSwx
MSArMTU0LDE4IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1f
bG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gIm9y
ZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1JbnRlZ2VyRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVt
YmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpz
TnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgaWYgKG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlciht
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7Ci0gICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cy52YWx1ZSgpKSk7
CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlciht
X21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNO
dW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bVNpZ25pZmlj
YW50RGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERp
Z2l0cykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBKU0FycmF5
KiBjYXRlZ29yaWVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oCmluZGV4IGIwMTVmZTgyYTBlNjkzYTBjYmQwODJiMjIwZjI1NWQ4MmFlNzRiNzEuLmZh
NDMzZGZhMjhjMGFmMzM1ODhjNTEyZjQzNDg0YTc3NWU0MGNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yNSw5ICsyNSwxMCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUgPHVu
aWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBl
cnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUzLDYgKzU0LDkgQEAgY2xhc3MgSW50bFBs
dXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgREVDTEFS
RV9JTkZPOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CisgICAgZnJpZW5kIHZv
aWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUq
LCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CisKICAgICB2
b2lkIGluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxl
cywgSlNWYWx1ZSBvcHRpb25zKTsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCos
IGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwpAQCAtNjYsMTIgKzcwLDggQEAgY2xhc3MgSW50bFBsdXJhbFJ1
bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgZW51bSBjbGFzcyBU
eXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAgICBzdHJ1Y3QgVVBsdXJhbFJ1
bGVzRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqKSBjb25z
dDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZv
aWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBV
UGx1cmFsUnVsZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1cGxydWxlc19jbG9zZT47CisgICAgdXNp
bmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4gbV9wbHVy
YWxSdWxlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1h
dERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OwpAQCAtODAsOCArODAsOSBAQCBjbGFzcyBJbnRsUGx1
cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQg
bV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7
IDMgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAg
IHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVk
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIEludGxSb3VuZGluZ1R5cGUg
bV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9OwogICAg
IFR5cGUgbV90eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKaW5k
ZXggOTFiMWJmYTE0MjU4OTFmN2MzYzg1NDRhMmI3NDk4MDMwZjdjNDZlNy4uNzI5NDM0ZGNlNmE4
ODcwMDE5Nzg0YmY4OWQ4ZDNmM2RhNmJkMmY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC00MCwx
OCArNDAsNiBAQCBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZvcm1hdEludGVybmFsIHsKIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVuc2lvbktleXNbMV0gPSB7ICJudSIgfTsK
IH0KIAotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVUmVsYXRpdmVEYXRlVGltZUZvcm1h
dHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqIHJlbGF0
aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Ci17Ci0gICAgaWYgKHJlbGF0aXZlRGF0ZVRpbWVG
b3JtYXR0ZXIpCi0gICAgICAgIHVyZWxkYXRlZm10X2Nsb3NlKHJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXIpOwotfQotCi12b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXRE
ZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkgY29uc3QKLXsK
LSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7
Ci19Ci0KIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhl
YXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpAQCAtMzA5LDcgKzI5
Nyw4IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgYWJzVmFsdWUsIGZvcm1hdHRl
ZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0
KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bEZpZWxkSXRlcmF0b3IgZmllbGRJdGVy
YXRvcigqaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVj
aW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpz
U3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDg1
YjgxZmE4MzhkMzVlZjMzZWU5YzBhZTZhNTAyNzBkMTZmODU1ZGEuLmUyNzE4Nzk4NTk3Y2E3MDU1
YzFjYTNkZGZiYjk5YTIxZDQxM2E2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTY4LDEyICs2OCw4IEBA
IGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IExvbmcsIFNob3J0LCBO
YXJyb3cgfTsKIAotICAgIHN0cnVjdCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIg
ewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBj
b25zdDsKLSAgICB9OwotICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAg
IHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2lu
ZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVyZWxkYXRl
Zm10X2Nsb3NlPjsKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8
dW51bV9jbG9zZT47CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGUx
MmY0ODE2YzNlMTQ0MjU1YzFhNGY1MzJhMjg2NzdkZGIzZDI1NTYuLmUyNjIxZWQ5NGU1OTg0OWE3
YTZjODc4MDBiNTVhZGM2MDA3MjIwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpA
QCAtMzA3Niw5ICszMDc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKEpTR2xvYmFsT2IKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKIHsKLSAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87Ci0gICAg
dV9nZXRWZXJzaW9uKHZlcnNpb25JbmZvKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHZlcnNpb25JbmZvWzBdKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Bc3NlcnRFbmFibGVkKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYTYzNTk3ZjRhMjBlZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYwOWMxOS4uMTA2
YWRjZjViOWI5NWQxZTM4MDcwODVmMmMzNzIwYTk1MDJiMjhiNyAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtF
Q01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3JtYXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgorCisgICAgICAgIEFsbCB0
ZXN0MjYyIGZhaWx1cmVzIGFyZSBkdWUgdG8gb2xkIElDVSB2ZXJzaW9uLiBPbmNlIElDVSBpcyB1
cGRhdGVkLCB0aGV5IHdpbGwgZ28gYXdheS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC11bmlmaWVkLWphLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11
bmlmaWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHZtLmljdVZl
cnNpb24pOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAg
KHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAgICAoc2hvdWxkQmUudGVzdE51bWJlckZvcm1hdC5J
bnRsLk51bWJlckZvcm1hdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAg
ICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA2LTI2ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QyNjIKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQtamEuanMgYi9K
U1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4Mjg4ZGZhMGM2N2E1OTJjMGI0NDU0N2UxMTI5N2U0MDNjNWNlZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpzCkBAIC0w
LDAgKzEsNTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCkgeworICAg
IHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAgICAg
c3R5bGU6ICJ1bml0IiwKKyAgICAgICAgdW5pdDogIm1ldGVyLXBlci1zZWNvbmQiLAorICAgICAg
ICB1bml0RGlzcGxheTogInNob3J0IgorICAgIH0pLCBgMjk5LDc5Miw0NTggbS9zYCk7CisKKyAg
ICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAg
IG5vdGF0aW9uOiAic2NpZW50aWZpYyIKKyAgICB9KSwgYDkuODc3RThgKTsKKworICAgIHNob3Vs
ZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAgICAgbm90YXRp
b246ICJlbmdpbmVlcmluZyIKKyAgICB9KSwgYDk4Ny42NTRFNmApOworCisgICAgc2hvdWxkQmUo
KDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBub3RhdGlvbjog
ImNvbXBhY3QiLAorICAgICAgICBjb21wYWN0RGlzcGxheTogImxvbmciCisgICAgfSksIGA5Ljnl
hIRgKTsKKworICAgIHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIs
IHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIiwKKyAgICAgICAgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLAorICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICAg
IHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIgorICAgIH0p
LCBgMy4wMEU4IG0vc2ApOworCisgICAgc2hvdWxkQmUoKDU1KS50b0xvY2FsZVN0cmluZygiamEt
SlAiLCB7CisgICAgICAgIHNpZ25EaXNwbGF5OiAiYWx3YXlzIgorICAgIH0pLCBgKzU1YCk7CisK
KyAgICBzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBz
dHlsZTogImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJFVVIiLAorICAgICAgICBjdXJy
ZW5jeVNpZ246ICJhY2NvdW50aW5nIgorICAgIH0pLCBgKOKCrDEwMC4wMClgKTsKKworICAgIHNo
b3VsZEJlKCgwLjU1KS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIHN0eWxlOiAi
cGVyY2VudCIsCisgICAgICAgIHNpZ25EaXNwbGF5OiAiZXhjZXB0WmVybyIKKyAgICB9KSwgYCs1
NSVgKTsKKworICAgIHNob3VsZEJlKCgxMDApLnRvTG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAg
ICAgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgICAgIGN1cnJlbmN5OiAiSlBZIiwKKyAgICAg
ICAgY3VycmVuY3lEaXNwbGF5OiAibmFycm93U3ltYm9sIgorICAgIH0pLCBg77+lMTAwYCk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMTIxMTU4ZmM3ZTYyNTE0YzA0OGQ1NDE2ZTRiZWI4NjcwNzgzMDBhCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qcwpAQCAtMCww
ICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpIHsKKyAgICBz
aG91bGRCZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIHN0
eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIiwKKyAgICAgICAg
dW5pdERpc3BsYXk6ICJzaG9ydCIKKyAgICB9KSwgYDI5OSw3OTIsNDU4IG0vc2ApOworCisgICAg
c2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBu
b3RhdGlvbjogInNjaWVudGlmaWMiCisgICAgfSksIGA5Ljg3N0U4YCk7CisKKyAgICBzaG91bGRC
ZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9u
OiAiZW5naW5lZXJpbmciCisgICAgfSksIGA5ODcuNjU0RTZgKTsKKworICAgIHNob3VsZEJlKCg5
ODc2NTQzMjEpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgbm90YXRpb246ICJj
b21wYWN0IiwKKyAgICAgICAgY29tcGFjdERpc3BsYXk6ICJsb25nIgorICAgIH0pLCBgOTg4IG1p
bGxpb25gKTsKKworICAgIHNob3VsZEJlKCgyOTk3OTI0NTgpLnRvTG9jYWxlU3RyaW5nKCJlbi1V
UyIsIHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIiwKKyAgICAgICAgbWluaW11bUZy
YWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAg
ICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAgIHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIgorICAg
IH0pLCBgMy4wMEU4IG0vc2ApOworCisgICAgc2hvdWxkQmUoKDU1KS50b0xvY2FsZVN0cmluZygi
ZW4tVVMiLCB7CisgICAgICAgIHNpZ25EaXNwbGF5OiAiYWx3YXlzIgorICAgIH0pLCBgKzU1YCk7
CisKKyAgICBzaG91bGRCZSgoLTEwMCkudG9Mb2NhbGVTdHJpbmcoImJuIiwgeworICAgICAgICBz
dHlsZTogImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJFVVIiLAorICAgICAgICBjdXJy
ZW5jeVNpZ246ICJhY2NvdW50aW5nIgorICAgIH0pLCBgKOCnp+CnpuCnpi7gp6bgp6bigqwpYCk7
CisKKyAgICBzaG91bGRCZSgoMC41NSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAg
ICBzdHlsZTogInBlcmNlbnQiLAorICAgICAgICBzaWduRGlzcGxheTogImV4Y2VwdFplcm8iCisg
ICAgfSksIGArNTUlYCk7CisKKyAgICBzaG91bGRCZSgoMTAwKS50b0xvY2FsZVN0cmluZygiZW4t
Q0EiLCB7CisgICAgICAgIHN0eWxlOiAiY3VycmVuY3kiLAorICAgICAgICBjdXJyZW5jeTogIlVT
RCIsCisgICAgICAgIGN1cnJlbmN5RGlzcGxheTogIm5hcnJvd1N5bWJvbCIKKyAgICB9KSwgYCQx
MDAuMDBgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKaW5kZXggMzFiYmM0YTI1
YzM0YTFiZDQ3YTVmM2YwMDA1MzE3NjkxOGMxZTU2MS4uZWY3NGE1OWRiY2ExZmEyNTBlY2M3YTUz
NTEzZWFkOWI2ZDQwMDI1ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTQ5
LDEyICs0OSwxNSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9z
c2libGVEaWZmZXJlbmNlcykgewogICAgICAgICAgICAgc3R5bGU6ICJkZWNpbWFsIiwKICAgICAg
ICAgICAgIGN1cnJlbmN5OiB1bmRlZmluZWQsCiAgICAgICAgICAgICBjdXJyZW5jeURpc3BsYXk6
IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogdW5kZWZpbmVkLAogICAgICAg
ICAgICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsCiAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM6IDAsCiAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDMsCiAgICAg
ICAgICAgICBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKICAgICAgICAgICAg
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAotICAgICAgICAgICAgdXNlR3Jv
dXBpbmc6IHRydWUKKyAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLAorICAgICAgICAgICAg
bm90YXRpb246ICJzdGFuZGFyZCIsCisgICAgICAgICAgICBzaWduRGlzcGxheTogImF1dG8iCiAg
ICAgICAgIH07CiAgICAgICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIGRpZmZlcmVu
Y2UpOwogICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdE9wdGlvbnMpOwpAQCAt
MTI0LDExICsxMjcsMTEgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHsgZ2V0IHN0eWxlKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9KSwgRXJyb3Ip
OwogCiAvLyBUaGUgb3B0aW9uIGN1cnJlbmN5IGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91
bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJl
bmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Ci1z
aG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVc0QnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7
Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1
ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdjTGYnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwg
dHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1i
b2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1d
KSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnfSksIFt7bG9jYWxlOiAnZW4n
LCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdz
eW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czog
MiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1i
ZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJy
ZW5jeTogJ1VzRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5j
eTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5k
YXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9
XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJ30pLCBbe2xvY2FsZTogJ2Vu
Jywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAn
c3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6
IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVt
YmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3Vy
cmVuY3k6ICdjTGYnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVu
Y3k6ICdDTEYnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFu
ZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogNCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0
fV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCd9KSwgW3tsb2NhbGU6ICdl
bicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1hYWCcsIGN1cnJlbmN5RGlzcGxheTog
J3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwogc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J1VTJCd9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVMnfSksIFJhbmdlRXJyb3Ip
Owogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3Vy
cmVuY3knLCBjdXJyZW5jeTogJ1VTIERvbGxhcid9KSwgUmFuZ2VFcnJvcik7CkBAIC0xMzYsOSAr
MTM5LDkgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxl
RGlmZmVyZW5jZXMpIHsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3N0eWxlOiAnZGVjaW1hbCcsIGN1cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTog
J2VuJywgc3R5bGU6ICdkZWNpbWFsJ31dKSwgdHJ1ZSk7CiAKIC8vIFRoZSBvcHRpb24gY3VycmVu
Y3lEaXNwbGF5IGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91bGRCZSh0ZXN0TnVtYmVyRm9y
bWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6
ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6
ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZScsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVl
KTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0
eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJv
bCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcs
IGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJywgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUp
Oworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5
bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZSd9
KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1
cnJlbmN5RGlzcGxheTogJ2NvZGUnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1G
cmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3No
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAn
Y3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCd9KSwg
W3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJl
bmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjogJ3N0YW5kYXJkJywgbWluaW11bUZy
YWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hv
dWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdj
dXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZSd9KSwgW3ts
b2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsIGN1cnJlbmN5
RGlzcGxheTogJ25hbWUnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKIHNob3VsZFRo
cm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3Vy
cmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdDb2RlJ30pLCBSYW5nZUVycm9yKTsKIHNo
b3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5
JywgY3VycmVuY3k6ICdVU0QnLCBnZXQgY3VycmVuY3lEaXNwbGF5KCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfX0pLCBFcnJvcik7CiBzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2RlY2ltYWwnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJ30p
LCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdkZWNpbWFsJ31dKSwgdHJ1ZSk7CkBAIC0xNzIsMTIg
KzE3NSwxMiBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2li
bGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2Vu
Jywge21heGltdW1GcmFjdGlvbkRpZ2l0czogMjF9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBv
cHRpb24gbWluaW11bVNpZ25pZmljYW50RGlnaXRzIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1z
aG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0czogNiwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwgdHJ1ZSk7CitzaG91
bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
czogdW5kZWZpbmVkLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzOiA2LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIxfV0pLCB0cnVl
KTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM6IDB9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRs
Lk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAyMn0pLCBSYW5n
ZUVycm9yKTsKIAogLy8gVGhlIG9wdGlvbiBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgaXMgcHJv
Y2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2Vu
JywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAxLCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6
IDZ9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7bG9jYWxlOiAnZW4nLCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB1
bmRlZmluZWQsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogMSwgbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzOiA2fV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0
KCdlbicsIHttaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDcsIG1heGltdW1TaWduaWZpY2FudERp
Z2l0czogNn0pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHttYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDB9KSwgUmFuZ2VFcnJvcik7CiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOiAyMn0pLCBSYW5nZUVycm9yKTsKQEAgLTQzNSw3ICs0MzgsNyBAQCBmdW5jdGlv
biB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewog
ewogICAgIGxldCBvcHRpb25zID0gZGVmYXVsdE5Gb3JtYXQucmVzb2x2ZWRPcHRpb25zKCk7CiAg
ICAgZGVsZXRlIG9wdGlvbnMubG9jYWxlOyAKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShv
cHRpb25zKSwgJ3sibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1p
bmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOnRydWV9Jyk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6
ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRz
IjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlv
biI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKIH0KIAogLy8gTGVnYWN5IGNv
bXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBhNzlmMmRi
ZTM2MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0Yjk0ZGYxLi4yMGU1ZTUzOTlhM2MxYWE5NjdkZTdh
OTBjNWRiNWE3YzVhYzY2NTM4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yOCw3ICsyOCw2IEBAIHNr
aXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKICAg
ICAtIEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKLSAgICAtIEludGwu
TnVtYmVyRm9ybWF0LXVuaWZpZWQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgogICAg
IC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggZjhiOWRkOTZiOWY3ZGU4Yjc2MjVkNTA5OGNjMDIwMTQy
ZWEwNWNmYS4uMTgxMjgzOWYyNWFlMDJhMmMyODI5ZmY4OTYwMjU1YjcxNDE1ZmIzMiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMTcwNCw5ICsxNzA0LDExNCBAQCB0ZXN0L2ludGw0
MDIvTG9jYWxlL2xpa2VseS1zdWJ0YWdzLmpzOgogdGVzdC9pbnRsNDAyL0xvY2FsZS9wcm90b3R5
cGUvbWluaW1pemUvcmVtb3ZpbmctbGlrZWx5LXN1YnRhZ3MtZmlyc3QtYWRkcy1saWtlbHktc3Vi
dGFncy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBzaG91
bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7Cuykg
dG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6ICJ1bmQiLm1pbmltaXpl
KCkgc2hvdWxkIGJlICJlbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS12YS1wb3NpeMK7LCDC
q2VuwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXQvZW5naW5lZXJpbmctc2NpZW50aWZpYy1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
LeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtZW4tVVMuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3i
iJ7CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbmdpbmVlcmluZy1zY2llbnRpZmljLWph
LUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst
4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqst4oieRTDCuywgwqst4oiewrspIHRvIGJlIHRydWUn
Cit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvZW5naW5lZXJpbmct
c2NpZW50aWZpYy1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLeKInkUwwrssIMKrLeKInsK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
L2VuZ2luZWVyaW5nLXNjaWVudGlmaWMtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5FMMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy3iiJ5F
MMK7LCDCqy3iiJ7CuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdC9udW1iZXJpbmctc3lzdGVtcy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogbnVtYmVyaW5nU3lzdGVtOiBhZGxtLCBkaWdpdDogMCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqswwrssIMKr8J6lkMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogbnVtYmVyaW5nU3lzdGVtOiBhZGxtLCBkaWdpdDogMCBFeHBlY3RlZCBTYW1lVmFsdWUowqsw
wrssIMKr8J6lkMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90
b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWRlLURFLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstMCwwMMKgJMK7LCDCqzAsMDDCoCTC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy0wLDAwwqAkwrssIMKrMCwwMMKgJMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRs
NDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWVu
LVVTLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqso
JDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4wMCnCuywgwqskMC4wMMK7KSB0byBiZSB0
cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3NpZ25EaXNw
bGF5LWN1cnJlbmN5LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqygkMC4wMCnCuywgwqsk
MC4wMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUv
Zm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LWtvLUtSLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktY3VycmVuY3ktemgtVFcu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyhVUyQw
LjAwKcK7LCDCq1VTJDAuMDDCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqyhVUyQwLjAwKcK7LCDCq1VTJDAuMDDCuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWdu
RGlzcGxheS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhj
ZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1i
ZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1lbi1VUy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9z
aWduRGlzcGxheS1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAo
ZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBl
Y3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1rby1LUi5qczoKKyAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBTYW1lVmFsdWUowqstMMK7LCDCqzDC
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dC9zaWduRGlzcGxheS1yb3VuZGluZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsrMMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlz
cGxheS16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0
WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAtMC4wMDAxIChleGNlcHRaZXJvKSBFeHBlY3RlZCBT
YW1lVmFsdWUowqstMMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdC91bml0LWphLUpQLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvmmYLpgJ8tOTg344Kt44Ot44Oh44O844OI44Or
wrssIMKr5pmC6YCfIC05ODcg44Kt44Ot44Oh44O844OI44OrwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvmmYLpgJ8tOTg3
44Kt44Ot44Oh44O844OI44OrwrssIMKr5pmC6YCfIC05ODcg44Kt44Ot44Oh44O844OI44Orwrsp
IHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQv
dW5pdC16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrLTk4N+WFrOmHjC/lsI/mmYLCuywgwqstOTg3IOWFrOmHjC/lsI/mmYLCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qy05ODflhazph4wv5bCP5pmCwrssIMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRvIGJlIHRydWUn
Cit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2lu
ZWVyaW5nLXNjaWVudGlmaWMtZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1J
bmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDC
qzLCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0
eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRv
UGFydHMvZW5naW5lZXJpbmctc2NpZW50aWZpYy1lbi1VUy5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFs
dWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogLUluZmluaXR5IC0gZW5naW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0
wrssIMKrMsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0VG9QYXJ0cy9lbmdpbmVlcmluZy1zY2llbnRpZmljLWphLUpQLmpzOgorICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiAtSW5maW5pdHkgLSBlbmdpbmVlcmluZzogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzTCuywgwqsywrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9y
bWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuZ2luZWVyaW5nLXNjaWVudGlmaWMta28tS1Iu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBs
ZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC1JbmZpbml0eSAtIGVuZ2luZWVyaW5nOiBsZW5ndGgg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvZW5naW5lZXJpbmctc2NpZW50
aWZpYy16aC1UVy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5n
aW5lZXJpbmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLUluZmluaXR5IC0gZW5naW5lZXJp
bmc6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs0wrssIMKrMsK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlz
cGxheS1jdXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZp
bmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzXCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzbCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJlbmN5LWVuLVVT
LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDC
qzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdFRvUGFydHMvc2lnbkRpc3BsYXktY3VycmVuY3ktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywg
wqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmlu
ZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlz
cGxheS1jdXJyZW5jeS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZp
bmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpoLVRX
LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDC
qzTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdFRvUGFydHMvc2lnbkRpc3BsYXktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7
LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAw
MDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRv
UGFydHMvc2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0w
LjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4
Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMv
c2lnbkRpc3BsYXktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEg
KGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFpl
cm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScK
K3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRp
c3BsYXkta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2Vw
dFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1
ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBs
ZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXkt
emgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8p
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGgg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvdW5pdC1qYS1KUC5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrNMK7LCDCqzbCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqs2wrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1Bh
cnRzL3VuaXQtemgtVFcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1l
VmFsdWUowqszwrssIMKrNMK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGlt
ZUZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0
byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406493</attachid>
            <date>2020-08-12 20:45:55 -0700</date>
            <delta_ts>2020-08-12 20:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209774-20200812204554.patch</filename>
            <type>text/plain</type>
            <size>95282</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZmY3ZjI2NjQxYjk4ZjZkOTYzOWNiYTg2NWQzNDU4NDU2Njk3NDJkLi5hMzFhYzhiZTNhMTNiZTIw
YWFkNTgyNzIwYjNiZDZiMGEzMDcwNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0wOC0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IHVuaWZpZWQgSW50bC5OdW1iZXJGb3Jt
YXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB1cGRhdGVkIEludGwuTnVtYmVyRm9ybWF0
LiBUaGlzIHVwZGF0ZSB3YXMgcHJvcG9zZWQgaW4gWzFdLCBhbmQgaW50ZWdyYXRlZCBpbnRvIEVD
TUEtNDAyIHNwZWMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBtaXNzaW5n
IGZlYXR1cmVzIGluIHRoZSBwcmV2aW91cyBJbnRsLk51bWJlckZvcm1hdCBpbXBsZW1lbnRhdGlv
bi4gQWRkaW5nICJ1bml0IiwgInVuaXREaXNwbGF5IiwKKyAgICAgICAgInNpZ25EaXNwbGF5Iiwg
Im5vdGF0aW9uIiwgYW5kICJjdXJyZW5jeVNpZ24iLiBUaGVuIEludGwuTnVtYmVyRm9ybWF0IGNh
biBub3cgaGFuZGxlICJ1bml0IiBldGMuCisKKyAgICAgICAgVG8gc3VwcG9ydCBuZXcgZmVhdHVy
ZXMsIHdlIG5lZWQgdG8gdXNlIFVOdW1iZXJGb3JtYXR0ZXIgd2hpY2ggaXMgYXZhaWxhYmxlIGFm
dGVyIElDVSA2NCAod2hpbGUgaXQgaXMgb2ZmZXJlZCBpbiBJQ1UgNjIsIHNvbWUKKyAgICAgICAg
Y3JpdGljYWwgcGFydCBhcmUgYWRkZWQgaW4gNjQgdG9vKS4gU28sIHdlIGtlZXAgdGhlIG9sZCBV
TnVtYmVyRm9ybWF0IGJhc2VkIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHVzZWQgZm9yIFs2MCwg
NjQpIHNpbmNlIFdlYktpdAorICAgICAgICBjdXJyZW50bHkgc3VwcG9ydHMgSUNVIDYwLiBPbGQg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBuZXcgdGhpbmdzLiBJZiBJQ1UgaXMgNjQg
b3IgbGF0ZXIsIEludGwuTnVtYmVyRm9ybWF0IHN0YXJ0cyB1c2luZworICAgICAgICBVTnVtYmVy
Rm9ybWF0dGVyLCBhbmQgaW1wbGVtZW50cyBhbGwgdGhlIHNwZWNpZmllZCBmZWF0dXJlcy4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVuaWZpZWQtaW50
bC1udW1iZXJmb3JtYXQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlQ3VycmVuY3lE
aWdpdHMpOgorICAgICAgICAoSlNDOjpzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpXZWxsRm9ybWVkVW5pdDo6V2VsbEZvcm1lZFVuaXQpOgorICAgICAgICAo
SlNDOjp3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
c3R5bGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6SW50bEZp
ZWxkSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpJbnRsRmllbGRJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
UGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBs
dXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6
b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVFbnVtZXJhdGlvbkRl
bGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVy
OjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25JQ1VWZXJzaW9uKToKKwogMjAyMC0wOC0xMSAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKCkgbmVnbGVjdGVkIHRvIHNldCB0aGUgZXhjZXB0aW9uIHBvaW50ZXIgcmVzdWx0IGlu
IG9uZSBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MTk3ZjZiNjBjOGUz
ZmE1YmIwZTc4N2I0NmFmZTRjZWZmNGJmZTQxLi43M2M3OTgwMDdiNzIyNDE1YzgwNjg1NmJlMmU0
OWI3ZDJjNGNkZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc5Miw2ICsx
NzkyLDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNjcmlwdEZldGNoUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMjJFNUEzMURBNjQ0
MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25p
cHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2RTc3MDkgLyogRlRMU25p
cHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCAqLzsgfTsK
KwkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIzMTE2ODI0
QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTMy
NTk1NjQyMUZEQTJDOTAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1OTU2MzIxRkRBMkM4
MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCAqLzsgfTsKIAkJRTMyNUEzNjAy
MjIxMTU5MDAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVBMzVGMjIyMTE1OEEwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi87IH07CiAJCUUzMjgyQkJCMUZFOTMwQUYw
MEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00
OTYwLDYgKzQ5NjEsNyBAQAogCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25pcHBl
dFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTbmlwcGV0UGFy
YW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1z
LmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5oOyBw
YXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxE
YXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBHbG9i
YWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1QTM1RjIy
MjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTczMDQsNiArNzMwNiw3IEBACiAJCQkJQTFENzkyRjcxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLywKIAkJCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlBMUQ3OTJGOTFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJ
RTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggKi8s
CiAJCQkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwICovLAogCQkJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmggKi8sCiAJCQkJQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxP
YmplY3QuY3BwICovLApAQCAtOTc5Niw2ICs5Nzk5LDcgQEAKIAkJCQlBMUQ3OTJGRDFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzky
RkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjMxMTY5MjRBMURDMzUw
MDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQkJGRjIxQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggZWE1ODgzODY1NWQyMmQy
MTZlZDg4ZDM4MTc5M2I1ODk0ZTY3YWExMC4uYThiYjkxMjBjZmVmNDk1ZGJhY2EzOTgxMWJhNjEw
NGJiYmI3NDlhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3IuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
Ci0jaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miwx
MiArNDEsNiBAQCBuYW1lc3BhY2UgSW50bENvbGxhdG9ySW50ZXJuYWwgewogY29uc3RleHByIGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCi12b2lkIEludGxDb2xsYXRvcjo6VUNvbGxhdG9yRGVs
ZXRlcjo6b3BlcmF0b3IoKShVQ29sbGF0b3IqIGNvbGxhdG9yKSBjb25zdAotewotICAgIGlmIChj
b2xsYXRvcikKLSAgICAgICAgdWNvbF9jbG9zZShjb2xsYXRvcik7Ci19Ci0KIEludGxDb2xsYXRv
ciogSW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
ICAgICBJbnRsQ29sbGF0b3IqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxDb2xsYXRvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvcih2bSwgc3RydWN0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgKaW5kZXggYWUzYWE1MjUx
OTExY2Q4YTkyOWFhODdlYjJlY2E1YmYwYmQyMTM4My4uNzRiNDk5OTQwN2ZlNzdlOTQ0NjM1NmNm
ZmM5MTkzZmUyYTg2ZGY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmgKQEAgLTI2LDggKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKLQotc3RydWN0IFVDb2xsYXRvcjsKKyNpbmNsdWRlIDx1bmljb2RlL3Vjb2wu
aD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNzYsOSArNzYsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3IgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBTZW5zaXRpdml0eSA6IHVpbnQ4
X3QgeyBCYXNlLCBBY2NlbnQsIENhc2UsIFZhcmlhbnQgfTsKICAgICBlbnVtIGNsYXNzIENhc2VG
aXJzdCA6IHVpbnQ4X3QgeyBVcHBlciwgTG93ZXIsIEZhbHNlIH07CiAKLSAgICBzdHJ1Y3QgVUNv
bGxhdG9yRGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVQ29sbGF0b3IqKSBjb25z
dDsKLSAgICB9OworICAgIHVzaW5nIFVDb2xsYXRvckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVjb2xf
Y2xvc2U+OwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7CiAg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZW5zaXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAppbmRleCAxMGM2ZmZkNGQ2YzdlMjM3YzE3MWRmZDNhNDdiYWFhZmJhY2Y1MzdkLi5mMTkx
N2FmYmE1MDhjNGMyOTE3ZTVkZGZjOTQwNjBjMjVjZmQzYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ2LDEy
ICs0Niw2IEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsCiBuYW1lc3BhY2UgSW50bERhdGVUaW1l
Rm9ybWF0SW50ZXJuYWwgewogfQogCi12b2lkIEludGxEYXRlVGltZUZvcm1hdDo6VURhdGVGb3Jt
YXREZWxldGVyOjpvcGVyYXRvcigpKFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0KSBjb25zdAotewot
ICAgIGlmIChkYXRlRm9ybWF0KQotICAgICAgICB1ZGF0X2Nsb3NlKGRhdGVGb3JtYXQpOwotfQot
CiBJbnRsRGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXAp
KSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IGRmOWI1YzM5ZWM3
NjRlNTk2ZTU3Y2ExZWY5YzA2ZWEzZTY0YmQ4NDUuLmM1ZTAzMDRkZjAxM2EyNTkzNzNiYzJjNWNj
YmI4NDgxMTZmYjg0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC04MSw5ICs4Miw3IEBA
IGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBlbnVtIGNsYXNzIFNlY29uZCA6IHVpbnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVt
ZXJpYyB9OwogICAgIGVudW0gY2xhc3MgVGltZVpvbmVOYW1lIDogdWludDhfdCB7IE5vbmUsIFNo
b3J0LCBMb25nIH07CiAKLSAgICBzdHJ1Y3QgVURhdGVGb3JtYXREZWxldGVyIHsKLSAgICAgICAg
dm9pZCBvcGVyYXRvcigpKFVEYXRlRm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICB1c2luZyBV
RGF0ZUZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVkYXRfY2xvc2U+OwogCiAgICAgdm9pZCBz
ZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgd2Vla2RheVN0cmluZyhXZWVrZGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggNmY2NWVlOTEzYWY0MDlk
M2Y5YWVhM2M1Y2U0MjBmOGZiOWU4MTc5Yy4uOGUzNzFmMjQ4Y2FmNjllMWU5ZmYwYjA5MmQ1Njk4
YjBkZjc2NWI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00MSw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXQ6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKIAogbmFtZXNwYWNlIEludGxOdW1i
ZXJGb3JtYXRJbnRlcm5hbCB7Ci1jb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CitzdGF0
aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCiBzdHJ1Y3QgSW50bE51bWJl
ckZvcm1hdEZpZWxkIHsKQEAgLTQ5LDEyICs1MCw2IEBAIHN0cnVjdCBJbnRsTnVtYmVyRm9ybWF0
RmllbGQgewogICAgIHNpemVfdCBzaXplOwogfTsKIAotdm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpV
TnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3Jt
YXQpIGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9zZShu
dW1iZXJGb3JtYXQpOwotfQotCiBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9y
bWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0
Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTExOSw3ICsx
MTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmlu
ZyYgY3VycmVuY3kpCiAgICAgLy8gMTEuMS4xIFRoZSBhYnN0cmFjdCBvcGVyYXRpb24gQ3VycmVu
Y3lEaWdpdHMgKGN1cnJlbmN5KQogICAgIC8vICJJZiB0aGUgSVNPIDQyMTcgY3VycmVuY3kgYW5k
IGZ1bmRzIGNvZGUgbGlzdCBjb250YWlucyBjdXJyZW5jeSBhcyBhbiBhbHBoYWJldGljIGNvZGUs
CiAgICAgLy8gdGhlbiByZXR1cm4gdGhlIG1pbm9yIHVuaXQgdmFsdWUgY29ycmVzcG9uZGluZyB0
byB0aGUgY3VycmVuY3kgZnJvbSB0aGUgbGlzdDsgZWxzZSByZXR1cm4gMi4KLSAgICBzdGQ6OnBh
aXI8Y29uc3QgY2hhciosIHVuc2lnbmVkPiBjdXJyZW5jeU1pbm9yVW5pdHNbXSA9IHsKKyAgICBz
dGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgdW5zaWduZWQ+IGN1cnJlbmN5
TWlub3JVbml0c1tdID0gewogICAgICAgICB7ICJCSEQiLCAzIH0sCiAgICAgICAgIHsgIkJJRiIs
IDAgfSwKICAgICAgICAgeyAiQllSIiwgMCB9LApAQCAtMTUzLDYgKzE0OCwxMjAgQEAgc3RhdGlj
IHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeURpZ2l0cyhjb25zdCBTdHJpbmcmIGN1cnJlbmN5KQog
ICAgIHJldHVybiAyOwogfQogCisvLyBDcmVhdGUgTWVhc3VyZVVuaXQgbGlrZSBJQ1U0Si4KK3N0
cnVjdCBNZWFzdXJlVW5pdCB7CisgICAgQVNDSUlMaXRlcmFsIHR5cGU7CisgICAgQVNDSUlMaXRl
cmFsIHN1YlR5cGU7Cit9OworCitzdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9u
ZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQoreworICAg
IHN0YXRpYyBjb25zdGV4cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKKyAgICAgICAg
eyAiYXJlYSJfcywgImFjcmUiX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImJpdCJfcyB9
LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAiYnl0ZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJh
dHVyZSJfcywgImNlbHNpdXMiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAiY2VudGltZXRl
ciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgImRheSJfcyB9LAorICAgICAgICB7ICJh
bmdsZSJfcywgImRlZ3JlZSJfcyB9LAorICAgICAgICB7ICJ0ZW1wZXJhdHVyZSJfcywgImZhaHJl
bmhlaXQiX3MgfSwKKyAgICAgICAgeyAidm9sdW1lIl9zLCAiZmx1aWQtb3VuY2UiX3MgfSwKKyAg
ICAgICAgeyAibGVuZ3RoIl9zLCAiZm9vdCJfcyB9LAorICAgICAgICB7ICJ2b2x1bWUiX3MsICJn
YWxsb24iX3MgfSwKKyAgICAgICAgeyAiZGlnaXRhbCJfcywgImdpZ2FiaXQiX3MgfSwKKyAgICAg
ICAgeyAiZGlnaXRhbCJfcywgImdpZ2FieXRlIl9zIH0sCisgICAgICAgIHsgIm1hc3MiX3MsICJn
cmFtIl9zIH0sCisgICAgICAgIHsgImFyZWEiX3MsICJoZWN0YXJlIl9zIH0sCisgICAgICAgIHsg
ImR1cmF0aW9uIl9zLCAiaG91ciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJpbmNoIl9z
IH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJraWxvYml0Il9zIH0sCisgICAgICAgIHsgImRp
Z2l0YWwiX3MsICJraWxvYnl0ZSJfcyB9LAorICAgICAgICB7ICJtYXNzIl9zLCAia2lsb2dyYW0i
X3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9zLCAia2lsb21ldGVyIl9zIH0sCisgICAgICAgIHsg
InZvbHVtZSJfcywgImxpdGVyIl9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYml0
Il9zIH0sCisgICAgICAgIHsgImRpZ2l0YWwiX3MsICJtZWdhYnl0ZSJfcyB9LAorICAgICAgICB7
ICJsZW5ndGgiX3MsICJtZXRlciJfcyB9LAorICAgICAgICB7ICJsZW5ndGgiX3MsICJtaWxlIl9z
IH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgIm1pbGUtc2NhbmRpbmF2aWFuIl9zIH0sCisgICAg
ICAgIHsgInZvbHVtZSJfcywgIm1pbGxpbGl0ZXIiX3MgfSwKKyAgICAgICAgeyAibGVuZ3RoIl9z
LCAibWlsbGltZXRlciJfcyB9LAorICAgICAgICB7ICJkdXJhdGlvbiJfcywgIm1pbGxpc2Vjb25k
Il9zIH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAibWludXRlIl9zIH0sCisgICAgICAgIHsg
ImR1cmF0aW9uIl9zLCAibW9udGgiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgIm91bmNlIl9z
IH0sCisgICAgICAgIHsgImNvbmNlbnRyIl9zLCAicGVyY2VudCJfcyB9LAorICAgICAgICB7ICJk
aWdpdGFsIl9zLCAicGV0YWJ5dGUiX3MgfSwKKyAgICAgICAgeyAibWFzcyJfcywgInBvdW5kIl9z
IH0sCisgICAgICAgIHsgImR1cmF0aW9uIl9zLCAic2Vjb25kIl9zIH0sCisgICAgICAgIHsgIm1h
c3MiX3MsICJzdG9uZSJfcyB9LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJpdCJfcyB9
LAorICAgICAgICB7ICJkaWdpdGFsIl9zLCAidGVyYWJ5dGUiX3MgfSwKKyAgICAgICAgeyAiZHVy
YXRpb24iX3MsICJ3ZWVrIl9zIH0sCisgICAgICAgIHsgImxlbmd0aCJfcywgInlhcmQiX3MgfSwK
KyAgICAgICAgeyAiZHVyYXRpb24iX3MsICJ5ZWFyIl9zIH0sCisgICAgfTsKKyAgICBBU1NFUlQo
CisgICAgICAgIHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oc2ltcGxlVW5pdHMpLCBzdGQ6OmVu
ZChzaW1wbGVVbml0cyksCisgICAgICAgICAgICBbXShjb25zdCBNZWFzdXJlVW5pdCYgYSwgY29u
c3QgTWVhc3VyZVVuaXQmIGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9p
bnRDb21wYXJlKFN0cmluZ1ZpZXcoYS5zdWJUeXBlKSwgU3RyaW5nVmlldyhiLnN1YlR5cGUpKSA8
IDA7CisgICAgICAgICAgICB9KSk7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9i
b3VuZChzdGQ6OmJlZ2luKHNpbXBsZVVuaXRzKSwgc3RkOjplbmQoc2ltcGxlVW5pdHMpLCB1bml0
SWRlbnRpZmllciwKKyAgICAgICAgW10oY29uc3QgTWVhc3VyZVVuaXQmIHVuaXQsIFN0cmluZ1Zp
ZXcgdW5pdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENv
bXBhcmUoU3RyaW5nVmlldyh1bml0LnN1YlR5cGUpLCB1bml0SWRlbnRpZmllcikgPCAwOworICAg
ICAgICB9KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gc3RkOjplbmQoc2ltcGxlVW5pdHMpICYmIGl0
ZXJhdG9yLT5zdWJUeXBlID09IHVuaXRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gKml0ZXJh
dG9yOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3N0cnVjdCBXZWxsRm9ybWVkVW5p
dCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2VsbEZvcm1lZFVuaXQoTWVhc3VyZVVuaXQgbnVt
ZXJhdG9yKQorICAgICAgICA6IG51bWVyYXRvcihudW1lcmF0b3IpCisgICAgeworICAgIH0KKwor
ICAgIFdlbGxGb3JtZWRVbml0KE1lYXN1cmVVbml0IG51bWVyYXRvciwgTWVhc3VyZVVuaXQgZGVu
b21pbmF0b3IpCisgICAgICAgIDogbnVtZXJhdG9yKG51bWVyYXRvcikKKyAgICAgICAgLCBkZW5v
bWluYXRvcihkZW5vbWluYXRvcikKKyAgICB7CisgICAgfQorCisgICAgTWVhc3VyZVVuaXQgbnVt
ZXJhdG9yOworICAgIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBkZW5vbWluYXRvcjsKK307CisKK3N0
YXRpYyBPcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0
cmluZ1ZpZXcgdW5pdElkZW50aWZpZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllcgorICAgIGlmIChhdXRvIHVuaXQgPSBz
YW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIodW5pdElkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gV2VsbEZvcm1lZFVuaXQodW5pdC52YWx1ZSgpKTsKKworICAgIC8vIElmIHRoZSBzdWJz
dHJpbmcgIi1wZXItIiBkb2VzIG5vdCBvY2N1ciBleGFjdGx5IG9uY2UgaW4gdW5pdElkZW50aWZp
ZXIsIHRoZW4gcmV0dXJuIGZhbHNlLgorICAgIGF1dG8gcGVyID0gU3RyaW5nVmlldygiLXBlci0i
X3MpOworICAgIGF1dG8gcG9zaXRpb24gPSB1bml0SWRlbnRpZmllci5maW5kKHBlcik7CisgICAg
aWYgKHBvc2l0aW9uID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKHVuaXRJZGVudGlmaWVyLmZpbmQocGVyLCBwb3NpdGlvbiArIHBlci5sZW5n
dGgoKSkgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIo
bnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCisgICAgYXV0byBudW1lcmF0
b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOworICAgIGF1dG8gbnVt
ZXJhdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpOwor
ICAgIGlmICghbnVtZXJhdG9yVW5pdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIo
ZGVub21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBhdXRvIGRlbm9t
aW5hdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgcGVyLmxlbmd0aCgp
KTsKKyAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRp
ZmllcihkZW5vbWluYXRvcik7CisgICAgaWYgKCFkZW5vbWluYXRvclVuaXQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9y
VW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7Cit9CisKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQKIHZvaWQg
SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewpA
QCAtMTk2LDcgKzMwNSw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX251bWJl
cmluZ1N5c3RlbSA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bGV2YW50RXh0ZW5zaW9uS2V5OjpOdSldOwogCi0gICAgbV9zdHlsZSA9IGludGxPcHRpb248U3R5
bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgeyAi
ZGVjaW1hbCJfcywgU3R5bGU6OkRlY2ltYWwgfSwgeyAicGVyY2VudCJfcywgU3R5bGU6OlBlcmNl
bnQgfSwgeyAiY3VycmVuY3kiX3MsIFN0eWxlOjpDdXJyZW5jeSB9IH0sICJzdHlsZSBtdXN0IGJl
IGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgU3R5
bGU6OkRlY2ltYWwpOworICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgImRlY2ltYWwiX3MsIFN0
eWxlOjpEZWNpbWFsIH0sIHsgInBlcmNlbnQiX3MsIFN0eWxlOjpQZXJjZW50IH0sIHsgImN1cnJl
bmN5Il9zLCBTdHlsZTo6Q3VycmVuY3kgfSwgeyAidW5pdCJfcywgU3R5bGU6OlVuaXQgfSB9LCAi
c3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBcImN1cnJlbmN5
XCIsIG9yIFwidW5pdFwiIl9zLCBTdHlsZTo6RGVjaW1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIFN0cmluZyBjdXJyZW5jeSA9IGludGxTdHJpbmdP
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y3VycmVuY3kiKSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKQEAgLTIyMCw1MCArMzI5LDIwOCBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBjdXJyZW5jeURpZ2l0cyA9IGNvbXB1
dGVDdXJyZW5jeURpZ2l0cyhjdXJyZW5jeSk7CiAgICAgfQogCi0gICAgbV9jdXJyZW5jeURpc3Bs
YXkgPSBpbnRsT3B0aW9uPEN1cnJlbmN5RGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIHsgeyAiY29kZSJf
cywgQ3VycmVuY3lEaXNwbGF5OjpDb2RlIH0sIHsgInN5bWJvbCJfcywgQ3VycmVuY3lEaXNwbGF5
OjpTeW1ib2wgfSwgeyAibmFtZSJfcywgQ3VycmVuY3lEaXNwbGF5OjpOYW1lIH0gfSwgImN1cnJl
bmN5RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiwgXCJzeW1ib2xcIiwgb3IgXCJuYW1l
XCIiX3MsIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sKTsKKyAgICBtX2N1cnJlbmN5RGlzcGxheSA9
IGludGxPcHRpb248Q3VycmVuY3lEaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwgeyB7ICJjb2RlIl9zLCBD
dXJyZW5jeURpc3BsYXk6OkNvZGUgfSwgeyAic3ltYm9sIl9zLCBDdXJyZW5jeURpc3BsYXk6OlN5
bWJvbCB9LCB7ICJuYXJyb3dTeW1ib2wiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9s
IH0sIHsgIm5hbWUiX3MsIEN1cnJlbmN5RGlzcGxheTo6TmFtZSB9IH0sICJjdXJyZW5jeURpc3Bs
YXkgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIsIFwic3ltYm9sXCIsIG9yIFwibmFtZVwiIl9zLCBD
dXJyZW5jeURpc3BsYXk6OlN5bWJvbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAotICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gaW50bE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAgbV9jdXJyZW5jeVNpZ24g
PSBpbnRsT3B0aW9uPEN1cnJlbmN5U2lnbj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lTaWduIiksIHsgeyAic3RhbmRhcmQiX3MsIEN1
cnJlbmN5U2lnbjo6U3RhbmRhcmQgfSwgeyAiYWNjb3VudGluZyJfcywgQ3VycmVuY3lTaWduOjpB
Y2NvdW50aW5nIH0gfSwgImN1cnJlbmN5U2lnbiBtdXN0IGJlIGVpdGhlciBcInN0YW5kYXJkXCIg
b3IgXCJhY2NvdW50aW5nXCIiX3MsIEN1cnJlbmN5U2lnbjo6U3RhbmRhcmQpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9taW5pbXVtSW50ZWdlckRpZ2l0
cyA9IG1pbmltdW1JbnRlZ2VyRGlnaXRzOwogCi0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCA9IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgPyBjdXJyZW5jeURp
Z2l0cyA6IDA7CisgICAgU3RyaW5nIHVuaXQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuaXQiKSwgeyB9LCBudWxs
cHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdDsKKyAgICBpZiAoIXVu
aXQuaXNOdWxsKCkpIHsKKyAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5pdElk
ZW50aWZpZXIodW5pdCk7CisgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKKyAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3QgYSB3
ZWxsLWZvcm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1fdW5pdCA9IHVuaXQ7CisgICAgfSBlbHNlIGlmIChtX3N0eWxlID09
IFN0eWxlOjpVbml0KSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ1bml0IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm47CisgICAgfQog
Ci0gICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
RnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwor
ICAgIG1fdW5pdERpc3BsYXkgPSBpbnRsT3B0aW9uPFVuaXREaXNwbGF5PihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0RGlzcGxheSIpLCB7IHsg
InNob3J0Il9zLCBVbml0RGlzcGxheTo6U2hvcnQgfSwgeyAibmFycm93Il9zLCBVbml0RGlzcGxh
eTo6TmFycm93IH0sIHsgImxvbmciX3MsIFVuaXREaXNwbGF5OjpMb25nIH0gfSwgInVuaXREaXNw
bGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRcIiwgXCJuYXJyb3dcIiwgb3IgXCJsb25nXCIiX3Ms
IFVuaXREaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKLSAgICBtX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0
czsKIAotICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaWYg
KG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KQotICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0ID0gc3RkOjptYXgobWluaW11bUZyYWN0aW9uRGlnaXRzLCBjdXJyZW5jeURpZ2l0
cyk7Ci0gICAgZWxzZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6UGVyY2VudCkKLSAgICAgICAgbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICBl
bHNlCi0gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1heChtaW5p
bXVtRnJhY3Rpb25EaWdpdHMsIDN1KTsKKyAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0ID0gKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRz
IDogMDsKKyAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gKG1fc3R5
bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSA/IGN1cnJlbmN5RGlnaXRzIDogKG1fc3R5bGUgPT0gU3R5
bGU6OlBlcmNlbnQpID8gMCA6IDM7CiAKLSAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICBtX25vdGF0aW9u
ID0gaW50bE9wdGlvbjxJbnRsTm90YXRpb24+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIHsgeyAic3RhbmRhcmQiX3MsIEludGxO
b3RhdGlvbjo6U3RhbmRhcmQgfSwgeyAic2NpZW50aWZpYyJfcywgSW50bE5vdGF0aW9uOjpTY2ll
bnRpZmljIH0sIHsgImVuZ2luZWVyaW5nIl9zLCBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nIH0s
IHsgImNvbXBhY3QiX3MsIEludGxOb3RhdGlvbjo6Q29tcGFjdCB9IH0sICJub3RhdGlvbiBtdXN0
IGJlIGVpdGhlciBcInN0YW5kYXJkXCIsIFwic2NpZW50aWZpY1wiLCBcImVuZ2luZWVyaW5nXCIs
IG9yIFwiY29tcGFjdFwiIl9zLCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwogCi0gICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgc2V0TnVtYmVy
Rm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgbWluaW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbV9ub3Rh
dGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIEpT
VmFsdWUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGln
aXRzIikpOworICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21w
YWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAi
bG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBi
ZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBpZiAoIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERp
Z2l0czsKLSAgICAgICAgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM7Ci0gICAgfQotCiAgICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRsQm9v
bGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1c2VHcm91cGluZyIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7
CiAKKyAgICBtX3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwg
eyB7ICJhdXRvIl9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3Bs
YXk6Ok5ldmVyIH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNl
cHRaZXJvIl9zLCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0
IGJlIGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFpl
cm9cIiJfcywgU2lnbkRpc3BsYXk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICAvLyBPcHRpb25zIGFyZSBvYnRhaW5lZC4gQ29uZmlndXJlIGZv
cm1hdHRlciBoZXJlLgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIC8v
IENvbnN0cnVjdGluZyBJQ1UgTnVtYmVyIFNrZWxldG9ucyB0byBjb25maWd1cmUgVU51bWJlckZv
cm1hdHRlci4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZAor
CisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNoICht
X3N0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKKyAgICAgICAgLy8gTm8gc2tlbGV0
b24gaXMgbmVlZGVkLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlOjpQZXJjZW50Ogor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlcmNlbnQgc2NhbGUvMTAw
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKKyAgICAgICAgc3dpdGNoICht
X2N1cnJlbmN5RGlzcGxheSkgeworICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1p
c28tY29kZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpTeW1ib2w6CisgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNp
ZnkgdW5pdC13aWR0aC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6TmFycm93U3ltYm9sOgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3R5bGU6
OlVuaXQ6IHsKKyAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1
aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0
dGVkLgorICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJv
dGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcjsK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUsICctJywg
bnVtZXJhdG9yVW5pdC5zdWJUeXBlKTsKKyAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0b3JVbml0
VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IpIHsKKyAgICAgICAgICAgIGF1dG8g
ZGVub21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUs
ICctJywgZGVub21pbmF0b3JVbml0LnN1YlR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJn
dWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0aAorICAgICAg
ICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKKyAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6U2hv
cnQ6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lk
dGgtc2hvcnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXREaXNwbGF5
OjpOYXJyb3c6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVu
aXQtd2lkdGgtbmFycm93Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbml0
RGlzcGxheTo6TG9uZzoKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOworICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicgOiAnKycpOyAvLyBQ
cmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5
cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7CisgICAg
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9j
cy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXBy
ZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlm
aWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgICAg
IC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI25vdGF0aW9uCisgICAgc3dp
dGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6U2NpZW50aWZpYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzY2llbnRpZmljIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpFbmdpbmVlcmluZzoKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbmdpbmVlcmluZyIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEludGxOb3RhdGlvbjo6Q29tcGFjdDoKKyAgICAgICAgc3dpdGNoIChtX2NvbXBh
Y3REaXNwbGF5KSB7CisgICAgICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjb21wYWN0LXNob3J0Iik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2Rv
Y3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWduLWRpc3Bs
YXkKKyAgICAvLyBDdXJyZW5jeVNpZ24ncyBhY2NvdW50aW5nIGlzIGEgcGFydCBvZiBTaWduRGlz
cGxheSBpbiBJQ1UuCisgICAgYm9vbCB1c2VBY2NvdW50aW5nID0gKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5ICYmIG1fY3VycmVuY3lTaWduID09IEN1cnJlbmN5U2lnbjo6QWNjb3VudGluZyk7
CisgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CisgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0
bzoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0byIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKKyAgICAgICAgaWYgKHVzZUFjY291bnRpbmcp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3Vu
dGluZy1hbHdheXMiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBzaWduLWFsd2F5cyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5n
LWV4Y2VwdC16ZXJvIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgZ3JvdXAtb2ZmIik7CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2Vs
ZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0
SW50ZXJuYWw6OnZlcmJvc2UsIG1fbG9jYWxlKTsKKyAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVy
Rm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxl
dG9uVmlldyhza2VsZXRvbik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRl
ciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2VsZXRvbkFuZExvY2Fs
ZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uVmll
dy5sZW5ndGgoKSwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxlIHN0eWxlID0gVU5V
TV9ERUZBVUxUOwogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0yODAsMTUgKzU0Nyw0NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAg
ICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgogICAgICAgICAgICAgc3R5bGUgPSBVTlVN
X0NVUlJFTkNZOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNw
bGF5OjpOYXJyb3dTeW1ib2w6CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQg
ZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFtZToK
ICAgICAgICAgICAgIHN0eWxlID0gVU5VTV9DVVJSRU5DWV9QTFVSQUw7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAobV9jdXJyZW5jeVNpZ24pIHsKKyAgICAgICAg
Y2FzZSBDdXJyZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1h
dCBzaW5jZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2
ZXJzaW9uIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNl
IFN0eWxlOjpVbml0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBp
cyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChtX25vdGF0aW9uKSB7CisgICAgY2FzZSBJbnRs
Tm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxOb3RhdGlv
bjo6U2NpZW50aWZpYzoKKyAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6CisgICAg
Y2FzZSBJbnRsTm90YXRpb246OkNvbXBhY3Q6CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgc2luY2Ug
dXNlZCBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJf
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fc2lnbkRpc3BsYXkp
IHsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNpZ25EaXNwbGF5OjpOZXZlcjoKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpBbHdheXM6CisgICAg
Y2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBzaW5j
ZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9u
Il9zKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIENTdHJpbmcgZGF0YUxvY2FsZVdp
dGhFeHRlbnNpb25zID0gbWFrZVN0cmluZyhyZXNvbHZlZC5kYXRhTG9jYWxlLCAiLXUtbnUtIiwg
bV9udW1iZXJpbmdTeXN0ZW0pLnV0ZjgoKTsKQEAgLTMwOCw0MCArNjA0LDU4IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKCFtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgeworCisgICAgc3dpdGNoIChtX3Jv
dW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6
CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01J
Tl9JTlRFR0VSX0RJR0lUUywgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1f
c2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJ
VFMsIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0
cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VE
LCB0cnVlKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
OwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9N
QVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgTnVtYmVyRm9ybWF0IHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVk
IGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5H
X1VTRUQsIG1fdXNlR3JvdXBpbmcpOwogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9y
bWF0LmdldCgpLCBVTlVNX1JPVU5ESU5HX01PREUsIFVOVU1fUk9VTkRfSEFMRlVQKTsKKyNlbmRp
ZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgogSlNW
YWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0K
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0
ZXIpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZm9y
bWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0
ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHVudW1mX2Zv
cm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
I2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0gY2Fs
bEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlLCBtX251bWJlckZvcm1h
dC5nZXQoKSwgdmFsdWUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKLQorI2VuZGlmCiAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtZm9ybWF0bnVtYmVyCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTM1
MiwxMCArNjY2LDI0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBhdXRvKiByYXdTdHJp
bmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVyczgoKSk7
CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
Rk9STUFUVEVSKQorICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6
OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVu
dW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVy
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3Mp
OworI2Vsc2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIGF1dG8gc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1iZXJG
b3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7
Ci0KKyNlbmRpZgogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQog
CkBAIC0zNjgsNiArNjk2LDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxl
U3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gInBlcmNlbnQiX3M7CiAgICAgY2Fz
ZSBTdHlsZTo6Q3VycmVuY3k6CiAgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgY2Fz
ZSBTdHlsZTo6VW5pdDoKKyAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CkBAIC0z
ODAsNiArNzEwLDggQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlz
cGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXMKICAgICAgICAgcmV0dXJuICJj
b2RlIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgIHJldHVy
biAic3ltYm9sIl9zOworICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYXJyb3dTeW1ib2w6Cisg
ICAgICAgIHJldHVybiAibmFycm93U3ltYm9sIl9zOwogICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpOYW1lOgogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQpAQCAtMzg3LDYgKzcxOSw3
NiBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5n
KEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5n
KEludGxOb3RhdGlvbiBub3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKG5vdGF0aW9uKSB7CisgICAg
Y2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9z
OworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTY2llbnRpZmljOgorICAgICAgICByZXR1cm4gInNj
aWVudGlmaWMiX3M7CisgICAgY2FzZSBJbnRsTm90YXRpb246OkVuZ2luZWVyaW5nOgorICAgICAg
ICByZXR1cm4gImVuZ2luZWVyaW5nIl9zOworICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21wYWN0
OgorICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3Vy
cmVuY3lTaWduKQoreworICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CisgICAgY2FzZSBDdXJy
ZW5jeVNpZ246OlN0YW5kYXJkOgorICAgICAgICByZXR1cm4gInN0YW5kYXJkIl9zOworICAgIGNh
c2UgQ3VycmVuY3lTaWduOjpBY2NvdW50aW5nOgorICAgICAgICByZXR1cm4gImFjY291bnRpbmci
X3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQoreworICAgIHN3aXRjaCAodW5p
dERpc3BsYXkpIHsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKKyAgICAgICAgcmV0dXJu
ICJzaG9ydCJfczsKKyAgICBjYXNlIFVuaXREaXNwbGF5OjpOYXJyb3c6CisgICAgICAgIHJldHVy
biAibmFycm93Il9zOworICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6CisgICAgICAgIHJldHVy
biAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1h
dDo6Y29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCit7
CisgICAgc3dpdGNoIChjb21wYWN0RGlzcGxheSkgeworICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6
OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgQ29tcGFjdERpc3Bs
YXk6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkg
c2lnbkRpc3BsYXkpCit7CisgICAgc3dpdGNoIChzaWduRGlzcGxheSkgeworICAgIGNhc2UgU2ln
bkRpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFNpZ25E
aXNwbGF5OjpOZXZlcjoKKyAgICAgICAgcmV0dXJuICJuZXZlciJfczsKKyAgICBjYXNlIFNpZ25E
aXNwbGF5OjpBbHdheXM6CisgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOworICAgIGNhc2UgU2ln
bkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVtYmVy
Zm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9y
bWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
IHsKQEAgLTM5NSwxOSArNzk3LDM4IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNv
bHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0s
IG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5udW1iZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOwogICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKLSAgICBpZiAobV9zdHlsZSA9
PSBTdHlsZTo6Q3VycmVuY3kpIHsKKyAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICBjYXNlIFN0
eWxlOjpEZWNpbWFsOgorICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OgogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIG1fY3VycmVuY3kpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lEaXNwbGF5KSkpOworICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
dXJyZW5jeVNpZ24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJyZW5jeVNpZ25TdHJpbmco
bV9jdXJyZW5jeVNpZ24pKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3R5bGU6OlVuaXQ6
CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInVuaXQiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3VuaXQpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pdERpc3Bs
YXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCB1bml0RGlzcGxheVN0cmluZyhtX3VuaXREaXNw
bGF5KSkpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNO
dW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIp
LCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgIGlmIChtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBBU1NFUlQobV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNO
dW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRz
IiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CiAgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykp
OwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpDb21wYWN0Um91bmRpbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBq
c0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJ
bnRsTm90YXRpb246OkNvbXBhY3QpCisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKKyAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlz
cGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRp
c3BsYXkpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTQxNiw3ICs4MzcsNyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2bSwgSlNCb3VuZEZ1bmN0
aW9uKiBmb3JtYXQpCiAgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0sIHRoaXMsIGZvcm1hdCk7CiB9
CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxk
cyBmaWVsZCwgZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmlu
ZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHls
ZSwgZG91YmxlIHZhbHVlKQogewogICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICBjYXNlIFVOVU1f
SU5URUdFUl9GSUVMRDoKQEAgLTQyOSwyMCArODUwLDMxIEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlIHZhbHVlKQog
ICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwogICAgIGNhc2UgVU5VTV9ERUNJTUFMX1NFUEFS
QVRPUl9GSUVMRDoKICAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9zOworICAgIGNhc2UgVU5VTV9F
WFBPTkVOVF9TWU1CT0xfRklFTEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRTZXBhcmF0b3Ii
X3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6CisgICAgICAgIHJldHVybiAi
ZXhwb25lbnRNaW51c1NpZ24iX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxEOgorICAg
ICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKICAgICBjYXNlIFVOVU1fR1JPVVBJTkdf
U0VQQVJBVE9SX0ZJRUxEOgogICAgICAgICByZXR1cm4gImdyb3VwIl9zOwogICAgIGNhc2UgVU5V
TV9DVVJSRU5DWV9GSUVMRDoKICAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKICAgICBjYXNl
IFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJwZXJjZW50U2lnbiJfczsKKyAg
ICAgICAgLy8gSWYgdGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0
LgorICAgICAgICAvLyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9w
cm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCisgICAgICAgIHJldHVybiAo
c3R5bGUgPT0gSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVy
Y2VudFNpZ24iX3M7CiAgICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiB2
YWx1ZSA8IDAgPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworICAgICAgICByZXR1cm4g
c3RkOjpzaWduYml0KHZhbHVlKSA/ICJtaW51c1NpZ24iX3MgOiAicGx1c1NpZ24iX3M7CisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGNhc2UgVU5VTV9NRUFTVVJFX1VOSVRf
RklFTEQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsKKyAgICBjYXNlIFVOVU1fQ09NUEFDVF9G
SUVMRDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOworI2VuZGlmCiAgICAgLy8gVGhlc2Ug
c2hvdWxkIG5vdCBzaG93IHVwIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhl
bSBpbiBOdW1iZXJGb3JtYXQgb3B0aW9ucy4KICAgICAvLyBJZiB0aGV5IGRvLCB0aGV5IGRvbid0
IGZpdCB3ZWxsIGludG8gYW55IG9mIGtub3duIHBhcnQgdHlwZXMsIHNvIGNvbnNpZGVyIGl0IGFu
ICJ1bmtub3duIi4KICAgICBjYXNlIFVOVU1fUEVSTUlMTF9GSUVMRDoKLSAgICBjYXNlIFVOVU1f
RVhQT05FTlRfU1lNQk9MX0ZJRUxEOgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxE
OgotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9GSUVMRDoKICAgICAvLyBBbnkgbmV3ZXIgYWRkaXRp
b25zIHRvIHRoZSBVTnVtYmVyRm9ybWF0RmllbGRzIGVudW0gc2hvdWxkIGp1c3QgYmUgY29uc2lk
ZXJlZCBhbiAidW5rbm93biIgcGFydC4KICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gInVu
a25vd24iX3M7CkBAIC00NTAsNyArODgyLDcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlw
ZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiAgICAgcmV0
dXJuICJ1bmtub3duIl9zOwogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFy
dHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvciwg
SlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUg
c3R5bGUsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0
ZXJhdG9yJiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC00NjIsNyArODk0LDEyIEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsCiAgICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZCwgMzI+IGZpZWxkcyhzdHJpbmdM
ZW5ndGgsIGxpdGVyYWxGaWVsZCk7CiAgICAgaW50MzJfdCBiZWdpbkluZGV4ID0gMDsKICAgICBp
bnQzMl90IGVuZEluZGV4ID0gMDsKLSAgICBhdXRvIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJf
bmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBmaWVsZFR5cGUgPSBpdGVyYXRvci5uZXh0
KGJlZ2luSW5kZXgsIGVuZEluZGV4LCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgewogICAgICAgICBzaXplX3Qgc2l6
ZSA9IGVuZEluZGV4IC0gYmVnaW5JbmRleDsKICAgICAgICAgZm9yIChhdXRvIGkgPSBiZWdpbklu
ZGV4OyBpIDwgZW5kSW5kZXg7ICsraSkgewpAQCAtNDcwLDcgKzkwNywxMSBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibAogICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5zaXplID49IHNpemUpCiAg
ICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJlckZvcm1hdEZpZWxkIHsgZmllbGRU
eXBlLCBzaXplIH07CiAgICAgICAgIH0KLSAgICAgICAgZmllbGRUeXBlID0gdWZpZWxkcG9zaXRl
cl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICAgICAgZmllbGRU
eXBlID0gaXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKKyAgICAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRl
cmF0b3IiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAg
YXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7
CkBAIC00ODQsNyArOTI1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICAgICAgYXV0
byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwogICAgICAgICB3aGlsZSAo
Y3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUg
PT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8g
cGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcg
OiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5
cGUpLCB2YWx1ZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVy
YWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CiAgICAgICAg
IGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwg
Y3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CkBAIC00OTksOCArOTQwLDYg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLQogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTUxMCw5ICs5NDksMjggQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWwKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
b3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMy
PiByZXN1bHQ7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIEFTU0VSVCht
X251bWJlckZvcm1hdHRlcik7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29w
ZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0
dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywg
Zm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmll
bGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1
cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
KTsKKyAgICBJbnRsRmllbGRJdGVyYXRvciBpdGVyYXRvcigqZmllbGRJdHIuZ2V0KCkpOworI2Vs
c2UKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcywgbV9udW1iZXJGb3Jt
YXQuZ2V0KCksIHZhbHVlLCByZXN1bHQsIGZpZWxkSXRyLmdldCgpKTsKICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgIEludGxGaWVsZEl0
ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7CisjZW5kaWYKIAogICAgIGF1dG8gcmVz
dWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAKQEAgLTUyMCw3ICs5NzgsNyBAQCBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbAogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBmb3JtYXRUb1BhcnRz
SW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVzdWx0U3RyaW5nLCBmaWVsZEl0ci5nZXQo
KSwgcGFydHMpOworICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIG1fc3R5
bGUsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGl0ZXJhdG9yLCBwYXJ0cyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHJldHVybiBwYXJ0czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAwMWUyMzdm
YTk5NmRlNTgwMGMwZTU4Njk4MjkwYTZjMzc5ZWNjMzJmLi5jZGE0ZWY1OTRkZDg1MGRmMWZlM2Ew
MDI3MTIzYmYzNzgxMzEwNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yOCwxMiArMjgsMjkgQEAKIAogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworI2lmICFkZWZpbmVkKEhBVkVfSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKy8vIFVOVU1fQ09NUEFDVF9GSUVMRCBhbmQgVU5VTV9NRUFTVVJFX1VOSVRfRklF
TEQgYXJlIGF2YWlsYWJsZSBhZnRlciBJQ1UgNjQuCisjaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9O
VU0gPj0gNjQKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfRk9STUFUVEVSIDEKKyNlbmRpZgor
I2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5p
Y29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEludGxGaWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFz
cyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKK2VudW0gY2xhc3MgSW50bFJvdW5k
aW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENv
bXBhY3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1aW50OF90IHsgU3Rh
bmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5v
dGF0aW9uKTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
QEAgLTY1LDcgKzgyLDE0IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAgICB2b2lkIHNldEJvdW5kRm9y
bWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKLSAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0g
bnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNpbWFsLCBQZXJj
ZW50LCBDdXJyZW5jeSwgVW5pdCB9OworCisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0lu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3Jt
YXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVs
bHB0cik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9p
ZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSos
IEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWdu
ZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKworICAgIHN0
YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uKTsKIAogcHJpdmF0
ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBAIC03NCwyMiArOTgs
MzMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmlu
ZyYsIFJlbGV2YW50RXh0ZW5zaW9uS2V5KTsKIAotICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50
OF90IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3kgfTsKLSAgICBlbnVtIGNsYXNzIEN1cnJl
bmN5RGlzcGxheSA6IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2wsIE5hbWUgfTsKLQotICAgIHN0cnVj
dCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVy
Rm9ybWF0KikgY29uc3Q7Ci0gICAgfTsKKyAgICBlbnVtIGNsYXNzIEN1cnJlbmN5RGlzcGxheSA6
IHVpbnQ4X3QgeyBDb2RlLCBTeW1ib2wsIE5hcnJvd1N5bWJvbCwgTmFtZSB9OworICAgIGVudW0g
Y2xhc3MgQ3VycmVuY3lTaWduIDogdWludDhfdCB7IFN0YW5kYXJkLCBBY2NvdW50aW5nIH07Cisg
ICAgZW51bSBjbGFzcyBVbml0RGlzcGxheSA6IHVpbnQ4X3QgeyBTaG9ydCwgTmFycm93LCBMb25n
IH07CisgICAgZW51bSBjbGFzcyBDb21wYWN0RGlzcGxheSA6IHVpbnQ4X3QgeyBTaG9ydCwgTG9u
ZyB9OworICAgIGVudW0gY2xhc3MgU2lnbkRpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgTmV2ZXIs
IEFsd2F5cywgRXhjZXB0WmVybyB9OwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0
cmluZyhTdHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJp
bmcoQ3VycmVuY3lEaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5U2ln
blN0cmluZyhDdXJyZW5jeVNpZ24pOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3Bs
YXlTdHJpbmcoVW5pdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERp
c3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2ln
bkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRG
dW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2lmIEhBVkUoSUNVX1Vf
TlVNQkVSX0ZPUk1BVFRFUikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElD
VURlbGV0ZXI8dW51bWZfY2xvc2U+OworICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVy
ID0gSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRl
cjsKKyNlbHNlCisgICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVu
dW1fY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVy
PHVudW1fY2xvc2U+PiBtX251bWJlckZvcm1hdDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9j
YWxlOwogICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5j
eTsKKyAgICBTdHJpbmcgbV91bml0OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdp
dHMgeyAxIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CkBAIC05Nyw3ICsxMzIs
MTMgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAg
ICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkg
bV9jdXJyZW5jeURpc3BsYXk7CisgICAgQ3VycmVuY3lTaWduIG1fY3VycmVuY3lTaWduOworICAg
IFVuaXREaXNwbGF5IG1fdW5pdERpc3BsYXk7CisgICAgQ29tcGFjdERpc3BsYXkgbV9jb21wYWN0
RGlzcGxheTsKKyAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6U3Rh
bmRhcmQgfTsKKyAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwogICAgIGJvb2wgbV91c2VH
cm91cGluZyB7IHRydWUgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsg
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2VhOGE3YWYxY2QyMzU1MWU3NDAxMTViNDg1
MzFkMGY2ZDdkOGE3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyAgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3ZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsSW5zdGFuY2UsIEpTT2Jq
ZWN0KiBvcHRpb25zLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRpb24gbm90YXRpb24p
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVuc2lnbmVkIG1pbmltdW1JbnRlZ2VyRGln
aXRzID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCAxLCAyMSwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIikpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG1heGltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNWYWx1ZSBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTVmFsdWUgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIikpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKworICAgIGlmICghbWluaW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
cm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAg
ICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwgMSwgMjEs
IDEpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAg
ICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiksIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgaW50bEluc3RhbmNl
LT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbWluaW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
RnJhY3Rpb25EaWdpdHMiKSwgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0ID0gc3RkOjptYXgobWluaW11
bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKKyAgICAgICAg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24o
Z2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMsIDIwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNBY3R1YWxEZWZhdWx0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5t
X21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAg
aW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRp
Z2l0czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub3RhdGlvbiA9PSBJbnRs
Tm90YXRpb246OkNvbXBhY3QpIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlw
ZSA9IEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdU
eXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpbnRsSW5zdGFuY2Ut
Pm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsK
K30KKworY2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgeworcHVibGljOgorICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEludGxGaWVsZEl0ZXJhdG9yKTsKKworICAgIGV4cGxpY2l0IEludGxGaWVsZEl0
ZXJhdG9yKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yKQorICAgICAgICA6IG1faXRl
cmF0b3IoaXRlcmF0b3IpCisgICAgeworICAgIH0KKworICAgIGludDMyX3QgbmV4dChpbnQzMl90
JiBiZWdpbkluZGV4LCBpbnQzMl90JiBlbmRJbmRleCwgVUVycm9yQ29kZSYpCisgICAgeworICAg
ICAgICByZXR1cm4gdWZpZWxkcG9zaXRlcl9uZXh0KCZtX2l0ZXJhdG9yLCAmYmVnaW5JbmRleCwg
JmVuZEluZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciYgbV9pdGVyYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggNjg0Y2JkN2Jj
ZDE3OTUyOGFlYjgyYTUzMTk1YWFhMjc3OWNiM2M2Ny4uOWUwMzU1NjMzNDhhMzRkZTdmY2U2Y2I4
Yzc0ZWI2ZWU1NzFjNTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC0zNSwy
NSArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxS
dWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVsZXMpIH07CiAKLXZvaWQgSW50bFBs
dXJhbFJ1bGVzOjpVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyog
cGx1cmFsUnVsZXMpIGNvbnN0Ci17Ci0gICAgaWYgKHBsdXJhbFJ1bGVzKQotICAgICAgICB1cGxy
dWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Ci19Ci0KLXZvaWQgSW50bFBsdXJhbFJ1bGVzOjpVTnVt
YmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQp
IGNvbnN0Ci17Ci0gICAgaWYgKG51bWJlckZvcm1hdCkKLSAgICAgICAgdW51bV9jbG9zZShudW1i
ZXJGb3JtYXQpOwotfQotCi1zdHJ1Y3QgVUVudW1lcmF0aW9uRGVsZXRlciB7Ci0gICAgdm9pZCBv
cGVyYXRvcigpKFVFbnVtZXJhdGlvbiogZW51bWVyYXRpb24pIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoZW51bWVyYXRpb24pCi0gICAgICAgICAgICB1ZW51bV9jbG9zZShlbnVtZXJhdGlvbik7
Ci0gICAgfQotfTsKK3VzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVlbnVt
X2Nsb3NlPjsKIAogSW50bFBsdXJhbFJ1bGVzKiBJbnRsUGx1cmFsUnVsZXM6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewpAQCAtMTIzLDM0ICsxMDYsOCBAQCB2b2lkIElu
dGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdQogICAgIG1fdHlwZSA9IGludGxPcHRpb248VHlwZT4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImNhcmRpbmFsIl9zLCBU
eXBlOjpDYXJkaW5hbCB9LCB7ICJvcmRpbmFsIl9zLCBUeXBlOjpPcmRpbmFsIH0gfSwgInR5cGUg
bXVzdCBiZSBcImNhcmRpbmFsXCIgb3IgXCJvcmRpbmFsXCIiX3MsIFR5cGU6OkNhcmRpbmFsKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgdW5zaWduZWQg
bWluaW11bUludGVnZXJEaWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiks
IDEsIDIxLCAxKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKLQotICAgIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSAwOwotICAgIHVuc2lnbmVkIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiks
IDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWlu
aW11bUZyYWN0aW9uRGlnaXRzOwotCi0gICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCA9IHN0ZDo6bWF4KG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgM3UpOwotICAgIHVuc2ln
bmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGln
aXRzIiksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMjAsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQpOworICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRo
aXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3RhdGlvbjo6U3RhbmRhcmQpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMg
PSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7Ci0KLSAgICBKU1ZhbHVlIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgSlNWYWx1ZSBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFs
dWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCAxLCAyMSwgMSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVu
c2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzIiksIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOwotICAg
IH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fbnVtYmVy
Rm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxl
dGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CkBAIC0xNTksMTQgKzExNiwyMCBAQCB2b2lkIElu
dGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKSB7Ci0gICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX1NJR05JRklDQU5UX0RJR0lUU19VU0VELCB0cnVlKTsKLSAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJ
R05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSk7Ci0g
ICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9T
SUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLnZhbHVlKCkpOwot
ICAgIH0gZWxzZSB7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywgbV9taW5pbXVt
SW50ZWdlckRpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIG1fbWluaW11bUZyYWN0aW9uRGlnaXRz
KTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
TUFYX0ZSQUNUSU9OX0RJR0lUUywgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAg
ICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9TSUdOSUZJ
Q0FOVF9ESUdJVFNfVVNFRCwgdHJ1ZSk7CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11bVNp
Z25pZmljYW50RGlnaXRzKTsKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0xODksMTEgKzE1MiwxOCBAQCBKU09iamVjdCogSW50bFBs
dXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2Fs
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBt
X3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWlu
aW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwot
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
bmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
Im1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0
cykpOwotICAgIGlmIChtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykgewotICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMudmFs
dWUoKSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMudmFsdWUoKSkpOworICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUp
IHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVt
RnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNh
bnREaWdpdHM6CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyIpLCBqc051bWJlcihtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiKSwganNO
dW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6OnRyeUNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCA3YTBlMDZhMzM5MmRiYTcw
ZjkyMTVjNTM5ZTgyYWM1NDQ0ZmFlZGUzLi5iZWFmMTk3NzBiOTY5ZmI1ZWFmNTM3Yjk0YWVhNzVj
ZWYxYWU5YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuaApAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1
bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC01NSw2ICs1Niw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEludGxUeXBlPgorICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0LCBJbnRsTm90YXRpb24pOworCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFsUnVsZXMoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CiAgICAgSlNW
YWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpT
T2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKQEAgLTY4LDEy
ICs3Miw4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5h
bCB9OwogCi0gICAgc3RydWN0IFVQbHVyYWxSdWxlc0RlbGV0ZXIgewotICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgVU51bWJl
ckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCop
IGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0
ZXI8dXBscnVsZXNfY2xvc2U+OworICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNV
RGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMs
IFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKQEAg
LTgyLDggKzgyLDkgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07
CiAgICAgdW5zaWduZWQgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7
IDAgfTsKKyAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkNhcmRpbmFs
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGE4ODU0MzVjNDkxMjU1Y2QzNDJhZDZhMzhm
ZTY4NGVkZDVmZGExMDguLjE4MzFkZWE2Njg4NjUxM2VlMzdiMzZjNGZlYmE2NzVjOWY3N2VkYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogCi0jaW5jbHVkZSAiSW50bE51
bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTM5LDE4ICszOSw2IEBAIGNvbnN0IENsYXNz
SW5mbyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCBudWxsCiBuYW1lc3BhY2UgSW50bFJlbGF0aXZlVGltZUZvcm1hdEludGVybmFsIHsK
IH0KIAotdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpVUmVsYXRpdmVEYXRlVGltZUZvcm1h
dHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqIHJlbGF0
aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Ci17Ci0gICAgaWYgKHJlbGF0aXZlRGF0ZVRpbWVG
b3JtYXR0ZXIpCi0gICAgICAgIHVyZWxkYXRlZm10X2Nsb3NlKHJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXIpOwotfQotCi12b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXRE
ZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkgY29uc3QKLXsK
LSAgICBpZiAobnVtYmVyRm9ybWF0KQotICAgICAgICB1bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7
Ci19Ci0KIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhl
YXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOwpAQCAtMzA1LDcgKzI5
Myw4IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgYWJzVmFsdWUsIGZvcm1hdHRl
ZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0
KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bEZpZWxkSXRlcmF0b3IgZmllbGRJdGVy
YXRvcigqaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVj
aW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpz
U3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDFh
MDBmNDk2YmM3YzY3ODAxM2FkZmQ3NDNhOGJjYmMxNzZmY2IyNGIuLmJiNjMxY2Y3MGJhYTRkZDBh
N2FhNTI4YjBkMDAwOWI3NjMzY2ZjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91cmVsZGF0ZWZtdC5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC03MSwxMiArNzIsOCBAQCBjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0IGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgZW51bSBjbGFzcyBTdHlsZSA6
IHVpbnQ4X3QgeyBMb25nLCBTaG9ydCwgTmFycm93IH07CiAKLSAgICBzdHJ1Y3QgVVJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVSZWxh
dGl2ZURhdGVUaW1lRm9ybWF0dGVyKikgY29uc3Q7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgVU51bWJl
ckZvcm1hdERlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCop
IGNvbnN0OwotICAgIH07CisgICAgdXNpbmcgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxl
dGVyID0gSUNVRGVsZXRlcjx1cmVsZGF0ZWZtdF9jbG9zZT47CisgICAgdXNpbmcgVU51bWJlckZv
cm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogCiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAppbmRleCA1MzdiY2M2MDJjOTg0NjgxN2FhNzA5NTlmMzdiMWJiMTlk
OGU4NjU1Li5hNWVjNDNlMGZiYjQ2YmFiZGJiMTVjNWYxYTliMmQ4ZWU2YWRkZjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC01Nyw2ICs1Nyw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKQEAgLTMwOTEsOSArMzA5Miw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdl
cyhKU0dsb2JhbE9iCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uSUNVVmVyc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7Ci0gICAgVVZlcnNp
b25JbmZvIHZlcnNpb25JbmZvOwotICAgIHVfZ2V0VmVyc2lvbih2ZXJzaW9uSW5mbyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2ZXJzaW9uSW5mb1swXSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpKSk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXNzZXJ0
RW5hYmxlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwOGI1YWQzNWExMzBlYjBiZDFi
ZmE3NGM1OWY1OTk5Njg0OGFlMTkuLmE1ZDViYzhjMmVhMDkzZGRjZTdmMmE4YWQxZDllMzk1NWY1
ZTRjMDMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDgtMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIEltcGxlbWVudCB1bmlmaWVkIEludGwu
TnVtYmVyRm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDk3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nIGFuZCBEYXJp
biBBZGxlci4KKworICAgICAgICBBbGwgdGVzdDI2MiBmYWlsdXJlcyBhcmUgZHVlIHRvIG9sZCBJ
Q1UgdmVyc2lvbi4gT25jZSBJQ1UgaXMgdXBkYXRlZCwgdGhleSB3aWxsIGdvIGF3YXkuCisKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC1qYS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiBz
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQuanM6CisgICAgICAgICh0ZXN0TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKHNo
b3VsZEJlLnRlc3ROdW1iZXJGb3JtYXQuSW50bC5OdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHRl
c3QyNjIvY29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoK
KwogMjAyMC0wOC0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWdFeHAgc3RpY2t5IG5vdCBtYXRjaGluZyBhbHRlcm5hdGVzIGNvcnJlY3RseSwgaWdu
b3JpbmcgbGFzdEluZGV4IHJlcXVpcmVtZW50CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC11bmlmaWVkLWphLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtdW5pZmllZC1qYS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODI4OGRmYTBjNjdhNTkyYzBiNDQ1
NDdlMTEyOTdlNDAzYzVjZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtdW5pZmllZC1qYS5qcwpAQCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
aWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpIHsKKyAgICBzaG91bGRCZSgoMjk5NzkyNDU4KS50
b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIHN0eWxlOiAidW5pdCIsCisgICAgICAg
IHVuaXQ6ICJtZXRlci1wZXItc2Vjb25kIiwKKyAgICAgICAgdW5pdERpc3BsYXk6ICJzaG9ydCIK
KyAgICB9KSwgYDI5OSw3OTIsNDU4IG0vc2ApOworCisgICAgc2hvdWxkQmUoKDk4NzY1NDMyMSku
dG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBub3RhdGlvbjogInNjaWVudGlmaWMi
CisgICAgfSksIGA5Ljg3N0U4YCk7CisKKyAgICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2Fs
ZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIG5vdGF0aW9uOiAiZW5naW5lZXJpbmciCisgICAg
fSksIGA5ODcuNjU0RTZgKTsKKworICAgIHNob3VsZEJlKCg5ODc2NTQzMjEpLnRvTG9jYWxlU3Ry
aW5nKCJqYS1KUCIsIHsKKyAgICAgICAgbm90YXRpb246ICJjb21wYWN0IiwKKyAgICAgICAgY29t
cGFjdERpc3BsYXk6ICJsb25nIgorICAgIH0pLCBgOS455YSEYCk7CisKKyAgICBzaG91bGRCZSgo
Mjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIG5vdGF0aW9uOiAi
c2NpZW50aWZpYyIsCisgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBzdHlsZTogInVuaXQiLAorICAgICAg
ICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIKKyAgICB9KSwgYDMuMDBFOCBtL3NgKTsKKworICAg
IHNob3VsZEJlKCg1NSkudG9Mb2NhbGVTdHJpbmcoImphLUpQIiwgeworICAgICAgICBzaWduRGlz
cGxheTogImFsd2F5cyIKKyAgICB9KSwgYCs1NWApOworCisgICAgc2hvdWxkQmUoKC0xMDApLnRv
TG9jYWxlU3RyaW5nKCJqYS1KUCIsIHsKKyAgICAgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAg
ICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICAgICAgY3VycmVuY3lTaWduOiAiYWNjb3VudGluZyIK
KyAgICB9KSwgYCjigqwxMDAuMDApYCk7CisKKyAgICBzaG91bGRCZSgoMC41NSkudG9Mb2NhbGVT
dHJpbmcoImphLUpQIiwgeworICAgICAgICBzdHlsZTogInBlcmNlbnQiLAorICAgICAgICBzaWdu
RGlzcGxheTogImV4Y2VwdFplcm8iCisgICAgfSksIGArNTUlYCk7CisKKyAgICBzaG91bGRCZSgo
MTAwKS50b0xvY2FsZVN0cmluZygiamEtSlAiLCB7CisgICAgICAgIHN0eWxlOiAiY3VycmVuY3ki
LAorICAgICAgICBjdXJyZW5jeTogIkpQWSIsCisgICAgICAgIGN1cnJlbmN5RGlzcGxheTogIm5h
cnJvd1N5bWJvbCIKKyAgICB9KSwgYO+/pTEwMGApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdW5pZmllZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXVuaWZpZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEyMTE1OGZjN2U2MjUxNGMwNDhk
NTQxNmU0YmViODY3MDc4MzAwYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXVuaWZpZWQuanMKQEAgLTAsMCArMSw1NCBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2lm
ICgkdm0uaWN1VmVyc2lvbigpID49IDY0KSB7CisgICAgc2hvdWxkQmUoKDI5OTc5MjQ1OCkudG9M
b2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBzdHlsZTogInVuaXQiLAorICAgICAgICB1
bml0OiAibWV0ZXItcGVyLXNlY29uZCIsCisgICAgICAgIHVuaXREaXNwbGF5OiAic2hvcnQiCisg
ICAgfSksIGAyOTksNzkyLDQ1OCBtL3NgKTsKKworICAgIHNob3VsZEJlKCg5ODc2NTQzMjEpLnRv
TG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgbm90YXRpb246ICJzY2llbnRpZmljIgor
ICAgIH0pLCBgOS44NzdFOGApOworCisgICAgc2hvdWxkQmUoKDk4NzY1NDMyMSkudG9Mb2NhbGVT
dHJpbmcoImVuLVVTIiwgeworICAgICAgICBub3RhdGlvbjogImVuZ2luZWVyaW5nIgorICAgIH0p
LCBgOTg3LjY1NEU2YCk7CisKKyAgICBzaG91bGRCZSgoOTg3NjU0MzIxKS50b0xvY2FsZVN0cmlu
ZygiZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9uOiAiY29tcGFjdCIsCisgICAgICAgIGNvbXBh
Y3REaXNwbGF5OiAibG9uZyIKKyAgICB9KSwgYDk4OCBtaWxsaW9uYCk7CisKKyAgICBzaG91bGRC
ZSgoMjk5NzkyNDU4KS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7CisgICAgICAgIG5vdGF0aW9u
OiAic2NpZW50aWZpYyIsCisgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAg
ICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICBzdHlsZTogInVuaXQiLAorICAg
ICAgICB1bml0OiAibWV0ZXItcGVyLXNlY29uZCIKKyAgICB9KSwgYDMuMDBFOCBtL3NgKTsKKwor
ICAgIHNob3VsZEJlKCg1NSkudG9Mb2NhbGVTdHJpbmcoImVuLVVTIiwgeworICAgICAgICBzaWdu
RGlzcGxheTogImFsd2F5cyIKKyAgICB9KSwgYCs1NWApOworCisgICAgc2hvdWxkQmUoKC0xMDAp
LnRvTG9jYWxlU3RyaW5nKCJibiIsIHsKKyAgICAgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAg
ICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICAgICAgY3VycmVuY3lTaWduOiAiYWNjb3VudGluZyIK
KyAgICB9KSwgYCjgp6fgp6bgp6Yu4Kem4Kem4oKsKWApOworCisgICAgc2hvdWxkQmUoKDAuNTUp
LnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIsIHsKKyAgICAgICAgc3R5bGU6ICJwZXJjZW50IiwKKyAg
ICAgICAgc2lnbkRpc3BsYXk6ICJleGNlcHRaZXJvIgorICAgIH0pLCBgKzU1JWApOworCisgICAg
c2hvdWxkQmUoKDEwMCkudG9Mb2NhbGVTdHJpbmcoImVuLUNBIiwgeworICAgICAgICBzdHlsZTog
ImN1cnJlbmN5IiwKKyAgICAgICAgY3VycmVuY3k6ICJVU0QiLAorICAgICAgICBjdXJyZW5jeURp
c3BsYXk6ICJuYXJyb3dTeW1ib2wiCisgICAgfSksIGAkMTAwLjAwYCk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IDMxYmJjNGEyNWMzNGExYmQ0N2E1ZjNmMDAwNTMxNzY5
MThjMWU1NjEuLmVmNzRhNTlkYmNhMWZhMjUwZWNjN2E1MzUxM2VhZDliNmQ0MDAyNWYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC00OSwxMiArNDksMTUgQEAgZnVuY3Rpb24g
dGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAg
ICAgICAgICAgIHN0eWxlOiAiZGVjaW1hbCIsCiAgICAgICAgICAgICBjdXJyZW5jeTogdW5kZWZp
bmVkLAogICAgICAgICAgICAgY3VycmVuY3lEaXNwbGF5OiB1bmRlZmluZWQsCisgICAgICAgICAg
ICBjdXJyZW5jeVNpZ246IHVuZGVmaW5lZCwKICAgICAgICAgICAgIG1pbmltdW1JbnRlZ2VyRGln
aXRzOiAxLAogICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLAogICAgICAgICAg
ICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLAogICAgICAgICAgICAgbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlCisgICAgICAgICAg
ICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIG5vdGF0aW9uOiAic3RhbmRhcmQiLAor
ICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRvIgogICAgICAgICB9OwogICAgICAgICBPYmpl
Y3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTEyNCwxMSArMTI3LDExIEBAIGZ1bmN0
aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7
CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7IGdldCBzdHlsZSgp
IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSksIEVycm9yKTsKIAogLy8gVGhlIG9wdGlvbiBjdXJy
ZW5jeSBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNE
J30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywg
Y3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1h
dChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
VXNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNE
JywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZv
cm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnQ0xGJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
Q0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJl
ckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnY0xmJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5
OiAnQ0xGJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDR9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51
bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnWFhYJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJl
bmN5OiAnWFhYJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgbWluaW11bUZyYWN0aW9uRGln
aXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJ9XSksIHRydWUpOworc2hvdWxkQmUodGVz
dE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScs
IGN1cnJlbmN5OiAnVVNEJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1
cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAn
c3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVc0QnfSksIFt7bG9jYWxl
OiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3Bs
YXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRl
c3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3kn
LCBjdXJyZW5jeTogJ0NMRid9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBj
dXJyZW5jeTogJ0NMRicsIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsIGN1cnJlbmN5U2lnbjog
J3N0YW5kYXJkJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiA0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM6IDR9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZv
cm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnY0xmJ30pLCBbe2xvY2Fs
ZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnQ0xGJywgY3VycmVuY3lEaXNw
bGF5OiAnc3ltYm9sJywgY3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IDQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNH1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5
JywgY3VycmVuY3k6ICdYWFgnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1cnJlbmN5Jywg
Y3VycmVuY3k6ICdYWFgnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBjdXJyZW5jeVNpZ246
ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGln
aXRzOiAyfV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyQnfSksIFJhbmdlRXJyb3IpOwog
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVu
Y3knLCBjdXJyZW5jeTogJ1VTJ30pLCBSYW5nZUVycm9yKTsKIHNob3VsZFRocm93KCgpID0+IElu
dGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVUyBE
b2xsYXInfSksIFJhbmdlRXJyb3IpOwpAQCAtMTM2LDkgKzEzOSw5IEBAIGZ1bmN0aW9uIHRlc3RO
dW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRC
ZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2RlY2lt
YWwnLCBjdXJyZW5jeTogJ1VTRCd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnZGVjaW1hbCd9
XSksIHRydWUpOwogCiAvLyBUaGUgb3B0aW9uIGN1cnJlbmN5RGlzcGxheSBpcyBwcm9jZXNzZWQg
Y29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lEaXNwbGF5
OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTog
J1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVy
Rm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVu
Y3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxlOiAnZW4nLCBz
dHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1i
b2wnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMn1d
KSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdl
bicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6
ICduYW1lJ30pLCBbe2xvY2FsZTogJ2VuJywgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAn
VVNEJywgY3VycmVuY3lEaXNwbGF5OiAnbmFtZScsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJG
b3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5j
eTogJ1VTRCcsIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHls
ZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJywg
Y3VycmVuY3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGlt
dW1GcmFjdGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0
KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHtzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdV
U0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTog
J2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLCBj
dXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11
bUZyYWN0aW9uRGlnaXRzOiAyfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQo
SW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VT
RCcsIGN1cnJlbmN5RGlzcGxheTogJ25hbWUnfSksIFt7bG9jYWxlOiAnZW4nLCBzdHlsZTogJ2N1
cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLCBjdXJyZW5jeURpc3BsYXk6ICduYW1lJywgY3VycmVu
Y3lTaWduOiAnc3RhbmRhcmQnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMn1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZv
cm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgY3VycmVuY3lE
aXNwbGF5OiAnQ29kZSd9KSwgUmFuZ2VFcnJvcik7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51
bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnVVNEJywgZ2V0
IGN1cnJlbmN5RGlzcGxheSgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH19KSwgRXJyb3IpOwogc2hv
dWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7c3R5bGU6ICdk
ZWNpbWFsJywgY3VycmVuY3lEaXNwbGF5OiAnY29kZSd9KSwgW3tsb2NhbGU6ICdlbicsIHN0eWxl
OiAnZGVjaW1hbCd9XSksIHRydWUpOwpAQCAtMTcyLDEyICsxNzUsMTIgQEAgZnVuY3Rpb24gdGVz
dE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHNob3Vs
ZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtRnJhY3Rpb25EaWdp
dHM6IDIxfSksIFJhbmdlRXJyb3IpOwogCiAvLyBUaGUgb3B0aW9uIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1h
dChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSks
IFt7bG9jYWxlOiAnZW4nLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IDYsIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0czogMjF9XSksIHRydWUpOworc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiA2fSksIFt7
bG9jYWxlOiAnZW4nLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHVuZGVmaW5lZCwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiB1bmRlZmluZWQsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogNiwgbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMX1dKSwgdHJ1ZSk7CiBzaG91bGRUaHJvdygoKSA9PiBJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmljYW50RGlnaXRzOiAwfSksIFJh
bmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21p
bmltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRp
b24gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91
bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHttYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHM6IDZ9KSwgW3tsb2NhbGU6ICdlbicsIG1pbmltdW1TaWduaWZpY2FudERp
Z2l0czogMSwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiA2fV0pLCB0cnVlKTsKK3Nob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZp
Y2FudERpZ2l0czogNn0pLCBbe2xvY2FsZTogJ2VuJywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB1
bmRlZmluZWQsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdW5kZWZpbmVkLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM6IDEsIG1heGltdW1TaWduaWZpY2FudERpZ2l0czogNn1dKSwgdHJ1ZSk7CiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOiA3LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDZ9KSwgUmFuZ2VFcnJvcik7
CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzOiAwfSksIFJhbmdlRXJyb3IpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5O
dW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VF
cnJvcik7CkBAIC00MzUsNyArNDM4LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1i
ZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRl
ZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2Fs
ZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5
c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwi
bWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdy
b3VwaW5nIjp0cnVlfScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCAn
eyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVn
ZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGln
aXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZSwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNw
bGF5IjoiYXV0byJ9Jyk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00
MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMGE2OWQxZjk0YzQwNTlhMzg2NDkxNjU4ZTE1MjY2
OTNkNzEyMTFkYi4uNDFhN2M0MmZlZmY3YzlmNGQwYjIzM2JjZDA5NDdmZDA1YzBkNTAxNCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbApAQCAtMjksNyArMjksNiBAQCBza2lwOgogICAgIC0gSW50bC5EYXRlVGlt
ZUZvcm1hdC1mb3JtYXRSYW5nZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFs
U2Vjb25kRGlnaXRzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKLSAgICAtIEludGwuTnVtYmVyRm9y
bWF0LXVuaWZpZWQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwKaW5kZXggNzlhOTNkZDg5NGQ4NzdjY2U3YTcyODFlMWM1MmQwOTc0MDU5NTZhZi4u
ZWY3ZTNlMWRiMWQ3NjVmNGQzMjg1NzM4YzU0MDFkNDM4ZmQyODVkZSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbApAQCAtMTY2NSw2ICsxNjY1LDgxIEBAIHRlc3QvaW50bDQwMi9Mb2NhbGUv
bGlrZWx5LXN1YnRhZ3MuanM6CiB0ZXN0L2ludGw0MDIvTG9jYWxlL3Byb3RvdHlwZS9taW5pbWl6
ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1hZGRzLWxpa2VseS1zdWJ0YWdzLmpzOgog
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBiZSAiZW4i
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBiZSB0cnVl
JwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBzaG91bGQg
YmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7CuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWdu
RGlzcGxheS1jdXJyZW5jeS1kZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrLTAsMDDCoCTCuywgwqswLDAwwqAkwrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstMCwwMMKg
JMK7LCDCqzAsMDDCoCTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1lbi1VUy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQwLjAwKcK7LCDCqyQwLjAw
wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxheS1jdXJyZW5jeS1qYS1K
UC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKCQw
LjAwKcK7LCDCqyQwLjAwwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoJDAuMDApwrssIMKrJDAuMDDCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9zaWduRGlzcGxh
eS1jdXJyZW5jeS1rby1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrKFVTJDAuMDApwrssIMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJworICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrKFVTJDAuMDApwrss
IMKrVVMkMC4wMMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90
b3R5cGUvZm9ybWF0L3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpoLVRXLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAw
wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUowqsoVVMkMC4wMCnCuywgwqtVUyQwLjAwwrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktZGUtREUuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDC
uywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXQvc2lnbkRpc3BsYXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0
WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktamEtSlAu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
LTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXQvc2lnbkRpc3BsYXkta28tS1IuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy0wwrssIMKrMMK7
KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogLTAuMDAwMSAoZXhj
ZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywgwqswwrspIHRvIGJlIHRydWUnCit0
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktcm91
bmRpbmcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qyswwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrKzDCuywgwqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvc2lnbkRpc3BsYXktemgtVFcuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqy0wwrssIMKrMMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogLTAuMDAwMSAoZXhjZXB0WmVybykgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrLTDCuywg
wqswwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9m
b3JtYXQvdW5pdC1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOODiOODq8K7LCDCq+aZgumAnyAtOTg3
IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr5pmC6YCfLTk4N+OCreODreODoeODvOODiOOD
q8K7LCDCq+aZgumAnyAtOTg3IOOCreODreODoeODvOODiOODq8K7KSB0byBiZSB0cnVlJwordGVz
dC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3VuaXQtemgtVFcuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqy05ODflhazph4wv
5bCP5pmCwrssIMKrLTk4NyDlhazph4wv5bCP5pmCwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqstOTg35YWs6YeML+Wwj+aZ
gsK7LCDCqy05ODcg5YWs6YeML+Wwj+aZgsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1k
ZS1ERS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbC
uywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJlbmN5LWVuLVVTLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5k
ZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2ln
bkRpc3BsYXktY3VycmVuY3ktamEtSlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVu
ZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbCuywgwqs0wrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqs2wrssIMKrNMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL051
bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9zaWduRGlzcGxheS1jdXJyZW5jeS1r
by1LUi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzbC
uywgwqs0wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXRUb1BhcnRzL3NpZ25EaXNwbGF5LWN1cnJlbmN5LXpoLVRXLmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqs2
wrssIMKrNMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogdW5k
ZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNsK7LCDCqzTCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2ln
bkRpc3BsYXktZGUtREUuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4
Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8p
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rl
c3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3Bs
YXktZW4tVVMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFpl
cm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktamEt
SlAuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBs
ZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9O
dW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXkta28tS1IuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGgg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvc2lnbkRpc3BsYXktemgtVFcuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IC0wLjAwMDEgKGV4Y2VwdFplcm8pOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrMsK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvdW5pdC1qYS1KUC5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogdW5kZWZpbmVkOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrNMK7LCDCqzbC
uykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzTCuywgwqs2wrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3VuaXQtemgtVFcu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHVuZGVmaW5lZDogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzPCuywgwqs0wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiB1bmRlZmluZWQ6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKr
NMK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9jb25zdHJ1
Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0
IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBi
dXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>