<?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>215438</bug_id>
          
          <creation_ts>2020-08-12 20:56:50 -0700</creation_ts>
          <short_desc>[JSC] Implement IntlNumberFormat v3</short_desc>
          <delta_ts>2021-11-10 10:02:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232889</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232949</see_also>
          <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>218829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679910</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-12 20:56:50 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679911</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-12 20:57:56 -0700</bug_when>
    <thetext>https://unicode-org.atlassian.net/browse/ICU-21182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681609</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-19 20:57:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/67449278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786888</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-24 12:33:44 -0700</bug_when>
    <thetext>Hmm, many APIs are requiring ICU 69.

1. New useGrouping
2. trailingZeroDisplay
3. halfCeil / halfFloor
4. signDisplay: &quot;negative&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787462</commentid>
    <comment_count>4</comment_count>
      <attachid>436468</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-25 21:57:30 -0700</bug_when>
    <thetext>Created attachment 436468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808181</commentid>
    <comment_count>5</comment_count>
      <attachid>442293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 00:55:54 -0700</bug_when>
    <thetext>Created attachment 442293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808182</commentid>
    <comment_count>6</comment_count>
      <attachid>442294</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 01:10:08 -0700</bug_when>
    <thetext>Created attachment 442294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808183</commentid>
    <comment_count>7</comment_count>
      <attachid>442295</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 01:13:33 -0700</bug_when>
    <thetext>Created attachment 442295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808184</commentid>
    <comment_count>8</comment_count>
      <attachid>442296</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 02:07:14 -0700</bug_when>
    <thetext>Created attachment 442296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808185</commentid>
    <comment_count>9</comment_count>
      <attachid>442297</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 02:13:07 -0700</bug_when>
    <thetext>Created attachment 442297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808186</commentid>
    <comment_count>10</comment_count>
      <attachid>442298</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 02:17:14 -0700</bug_when>
    <thetext>Created attachment 442298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808188</commentid>
    <comment_count>11</comment_count>
      <attachid>442299</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 02:56:23 -0700</bug_when>
    <thetext>Created attachment 442299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808189</commentid>
    <comment_count>12</comment_count>
      <attachid>442300</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 03:33:36 -0700</bug_when>
    <thetext>Created attachment 442300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808192</commentid>
    <comment_count>13</comment_count>
      <attachid>442302</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 04:14:00 -0700</bug_when>
    <thetext>Created attachment 442302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808195</commentid>
    <comment_count>14</comment_count>
      <attachid>442304</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 04:21:41 -0700</bug_when>
    <thetext>Created attachment 442304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808197</commentid>
    <comment_count>15</comment_count>
      <attachid>442305</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-24 04:25:46 -0700</bug_when>
    <thetext>Created attachment 442305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808760</commentid>
    <comment_count>16</comment_count>
      <attachid>442464</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-25 22:19:30 -0700</bug_when>
    <thetext>Created attachment 442464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808790</commentid>
    <comment_count>17</comment_count>
      <attachid>442472</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 01:25:23 -0700</bug_when>
    <thetext>Created attachment 442472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808811</commentid>
    <comment_count>18</comment_count>
      <attachid>442476</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 03:29:17 -0700</bug_when>
    <thetext>Created attachment 442476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808911</commentid>
    <comment_count>19</comment_count>
      <attachid>442502</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 09:56:15 -0700</bug_when>
    <thetext>Created attachment 442502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808949</commentid>
    <comment_count>20</comment_count>
      <attachid>442511</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 11:18:01 -0700</bug_when>
    <thetext>Created attachment 442511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809086</commentid>
    <comment_count>21</comment_count>
      <attachid>442540</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 15:47:50 -0700</bug_when>
    <thetext>Created attachment 442540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809087</commentid>
    <comment_count>22</comment_count>
      <attachid>442540</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 15:53:08 -0700</bug_when>
    <thetext>Comment on attachment 442540
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +            - halfCeil / halfFloor (requires ICU 68)
&gt; +            - signDisplay: &quot;negative&quot; (requires ICU 68)

Ah, they are ICU 69.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +            - formatRangeToParts (requires ICU 69)

And ICU 70.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809132</commentid>
    <comment_count>23</comment_count>
      <attachid>442549</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 17:52:09 -0700</bug_when>
    <thetext>Created attachment 442549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809140</commentid>
    <comment_count>24</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-10-26 18:36:56 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=442540&amp;action=review

Fantastic. :D

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:402
&gt; +    bool invalidRoundingIncrement = true;
&gt; +    for (unsigned candidate : roundingIncrementCandidates) {
&gt; +        if (m_roundingIncrement == candidate) {
&gt; +            invalidRoundingIncrement = false;
&gt; +            break;
&gt; +        }
&gt; +    }
&gt; +    if (invalidRoundingIncrement) {

How about std::none_of? :)

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:839
&gt; +    if (std::signbit(end) &amp;&amp; !end &amp;&amp; start &gt;= 0)

I wonder if we should have an inlined helper function for negative zero?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:212
&gt; +    enum class TrailingZeroDisplay : uint8_t { Auto, StripIfInteger };

Would there be any benefit to having this (and CompactDisplay) be bool?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:214
&gt; +    enum class RoundingMode : uint8_t { Ceil, Floor, Expand, Trunc, HalfCeil, HalfFloor, HalfExpand, HalfTrunc, HalfEven };

Sounds like Temporal is intended to use the same RoundingMode values as NumberFormat V3, so I think we should move and update the existing enum.
(See editor&apos;s note @ https://tc39.es/proposal-temporal/#sec-temporal-totemporalroundingmode)

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:71
&gt; +    bool hasSd = !minimumSignificantDigitsValue.isUndefined() || !maximumSignificantDigitsValue.isUndefined();
&gt; +    bool hasFd = !minimumFractionDigitsValue.isUndefined() || !maximumFractionDigitsValue.isUndefined();
&gt; +    bool needSd = hasSd || roundingPriority != IntlRoundingPriority::Auto;
&gt; +    bool needFd = (!hasSd &amp;&amp; notation != IntlNotation::Compact) || roundingPriority != IntlRoundingPriority::Auto;

nit: Seems like it should be &quot;has&quot;/&quot;needs&quot; or &quot;have&quot;/&quot;need&quot;. Also if we&apos;re going to abbreviate, I think it should be &quot;SD&quot; and &quot;FD&quot;.

&gt; JSTests/ChangeLog:10
&gt; +        * stress/intl-numberformat-format-range-v3.js: Added.

Seems like many of the new test files just deal with en-US -- maybe we should ensure that each new feature is getting checked for multiple locales?

&gt; JSTests/stress/intl-numberformat-format-range-v3.js:54
&gt; +    [&apos;formatRange&apos;].forEach(function(method) {

Why the forEach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809159</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 19:37:36 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #24)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442540&amp;action=review
&gt; 
&gt; Fantastic. :D
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:402
&gt; &gt; +    bool invalidRoundingIncrement = true;
&gt; &gt; +    for (unsigned candidate : roundingIncrementCandidates) {
&gt; &gt; +        if (m_roundingIncrement == candidate) {
&gt; &gt; +            invalidRoundingIncrement = false;
&gt; &gt; +            break;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +    if (invalidRoundingIncrement) {
&gt; 
&gt; How about std::none_of? :)

Sounds good.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:839
&gt; &gt; +    if (std::signbit(end) &amp;&amp; !end &amp;&amp; start &gt;= 0)
&gt; 
&gt; I wonder if we should have an inlined helper function for negative zero?

Added isNegativeZero.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:212
&gt; &gt; +    enum class TrailingZeroDisplay : uint8_t { Auto, StripIfInteger };
&gt; 
&gt; Would there be any benefit to having this (and CompactDisplay) be bool?

Useful for stringifying function (strongly typed enum ensures the right parameter is passed).
And this is aligned to the other options.
Since it is not true/false option, we should use uint8_t.


&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:214
&gt; &gt; +    enum class RoundingMode : uint8_t { Ceil, Floor, Expand, Trunc, HalfCeil, HalfFloor, HalfExpand, HalfTrunc, HalfEven };
&gt; 
&gt; Sounds like Temporal is intended to use the same RoundingMode values as
&gt; NumberFormat V3, so I think we should move and update the existing enum.
&gt; (See editor&apos;s note @
&gt; https://tc39.es/proposal-temporal/#sec-temporal-totemporalroundingmode)

Changed.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h:71
&gt; &gt; +    bool hasSd = !minimumSignificantDigitsValue.isUndefined() || !maximumSignificantDigitsValue.isUndefined();
&gt; &gt; +    bool hasFd = !minimumFractionDigitsValue.isUndefined() || !maximumFractionDigitsValue.isUndefined();
&gt; &gt; +    bool needSd = hasSd || roundingPriority != IntlRoundingPriority::Auto;
&gt; &gt; +    bool needFd = (!hasSd &amp;&amp; notation != IntlNotation::Compact) || roundingPriority != IntlRoundingPriority::Auto;
&gt; 
&gt; nit: Seems like it should be &quot;has&quot;/&quot;needs&quot; or &quot;have&quot;/&quot;need&quot;. Also if we&apos;re
&gt; going to abbreviate, I think it should be &quot;SD&quot; and &quot;FD&quot;.

This is aligned to the spec&apos;s names strictly since this is complicated.

&gt; 
&gt; &gt; JSTests/ChangeLog:10
&gt; &gt; +        * stress/intl-numberformat-format-range-v3.js: Added.
&gt; 
&gt; Seems like many of the new test files just deal with en-US -- maybe we
&gt; should ensure that each new feature is getting checked for multiple locales?

Added some tests.

&gt; 
&gt; &gt; JSTests/stress/intl-numberformat-format-range-v3.js:54
&gt; &gt; +    [&apos;formatRange&apos;].forEach(function(method) {
&gt; 
&gt; Why the forEach?

Because originally it also included &quot;formatRangeToParts&quot;, which cannot be implemented with the current ICU version.
I left forEach since I would like to keep V8 test as is as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809162</commentid>
    <comment_count>26</comment_count>
      <attachid>442558</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 19:46:19 -0700</bug_when>
    <thetext>Created attachment 442558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809166</commentid>
    <comment_count>27</comment_count>
      <attachid>442558</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-10-26 19:59:48 -0700</bug_when>
    <thetext>Comment on attachment 442558
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:422
&gt; +    m_roundingMode = intlOption&lt;RoundingMode&gt;(globalObject, options, vm.propertyNames-&gt;roundingMode, {

I think ultimately we should update temporalRoundingMode and use it here (or actually probably turn it into intlRoundingMode and use it from Temporal)?
But I guess we could wait for that spec to actually get updated with the intended behaviors.

&gt; Source/JavaScriptCore/runtime/MathCommon.h:68
&gt; +    return std::signbit(value) &amp;&amp; value == 0;

I think the style checker prefers `!value`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809176</commentid>
    <comment_count>28</comment_count>
      <attachid>442558</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-26 20:17:12 -0700</bug_when>
    <thetext>Comment on attachment 442558
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:422
&gt;&gt; +    m_roundingMode = intlOption&lt;RoundingMode&gt;(globalObject, options, vm.propertyNames-&gt;roundingMode, {
&gt; 
&gt; I think ultimately we should update temporalRoundingMode and use it here (or actually probably turn it into intlRoundingMode and use it from Temporal)?
&gt; But I guess we could wait for that spec to actually get updated with the intended behaviors.

Yes. Since TemporalObject and the spec is not handling these options, we should keep it separated for now.

&gt;&gt; Source/JavaScriptCore/runtime/MathCommon.h:68
&gt;&gt; +    return std::signbit(value) &amp;&amp; value == 0;
&gt; 
&gt; I think the style checker prefers `!value`?

I think it does not work if value is signed NaN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812716</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-08 11:20:54 -0800</bug_when>
    <thetext>Committed r285418 (243975@main): &lt;https://commits.webkit.org/243975@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812725</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-08 11:34:35 -0800</bug_when>
    <thetext>Committed r285420 (243976@main): &lt;https://commits.webkit.org/243976@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813206</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-09 10:11:47 -0800</bug_when>
    <thetext>Committed r285506 (244030@main): &lt;https://commits.webkit.org/244030@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436468</attachid>
            <date>2021-08-25 21:57:30 -0700</date>
            <delta_ts>2021-10-24 01:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20210825215729.patch</filename>
            <type>text/plain</type>
            <size>31645</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MDgyMDU3MzE5NjY0MTJhYTI4NTZkZTZmZTRmZDViYzU2Yjk3YTI3Li44MTNiOWFhOTMwNjZmMzVi
ZTI0MDcxNGNmNmViNDhiMDczMWNhNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6c2V0TnVtYmVyRm9ybWF0RGlnaXRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OmludGxTdHJpbmdPckJvb2xlYW5PcHRpb24pOgorCiAyMDIxLTA4LTI1ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjgxNTEz
Pyk6IFsgSlNDIENhdGFsaW5hKyBEZWJ1ZyBdIDE2IHN0cmVzcy9pbnRsLWVudW1lcmF0aW9uLmpz
IChKU0MgVGVzdHMpIGFyZSBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAzM2UyYzdlMTJiYzNkODdiM2I1
OGY4YWVlOTI1Mjc2OWY4YjY5NTljLi45MTg4NWM1ZGUwYTQyZDE0NzNiMjdiYWU1NjM1YjIzMWI2
YzA2NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKQEAgLTE5Myw2ICsxOTMsOSBAQAogICAgIG1hY3JvKHJlZ2lvbikgXAogICAg
IG1hY3JvKHJlcGxhY2UpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCisgICAgbWFjcm8ocm91bmRp
bmdJbmNyZW1lbnQpIFwKKyAgICBtYWNybyhyb3VuZGluZ01vZGUpIFwKKyAgICBtYWNybyhyb3Vu
ZGluZ1ByaW9yaXR5KSBcCiAgICAgbWFjcm8oc2NyaXB0KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBc
CiAgICAgbWFjcm8oc2VnbWVudCkgXApAQCAtMjIzLDYgKzIyNiw3IEBACiAgICAgbWFjcm8odG9M
b2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3Ry
aW5nKSBcCisgICAgbWFjcm8odHJhaWxpbmdaZXJvRGlzcGxheSkgXAogICAgIG1hY3JvKHR5cGUp
IFwKICAgICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2RlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGZjMzIz
NzAzMjAyMmI0YzZkNjdkZDgxNTU5ZWMzMzViNTZiZDBkZmYuLjEyOTBjNDkzNThiOGIxMTkzZGEw
NWVjMzQwMDJhN2U4ZjM1NzE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMDksMTQgKzMwOSw1NCBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYQogICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhnbG9iYWxP
YmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1heGlt
dW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKKyAgICBtX3JvdW5kaW5nSW5jcmVtZW50ID0gaW50bE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5k
aW5nSW5jcmVtZW50LCAxLCA1MDAwLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgcm91bmRpbmdJ
bmNyZW1lbnRDYW5kaWRhdGVzW10gPSB7CisgICAgICAgIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUw
LCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAKKyAgICB9OworICAg
IGJvb2wgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVk
IGNhbmRpZGF0ZSA6IHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlcykgeworICAgICAgICBpZiAo
bV9yb3VuZGluZ0luY3JlbWVudCA9PSBjYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGludmFsaWRS
b3VuZGluZ0luY3JlbWVudCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGludmFsaWRSb3VuZGluZ0luY3JlbWVudCkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3Qg
YmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEw
MDAsIDIwMDAsIDI1MDAsIDUwMDAiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEgJiYgbV9yb3VuZGluZ1R5cGUgIT0gSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZyB0eXBlIGlzIG5vdCBmcmFjdGlvbi1kaWdpdHMgd2hp
bGUgcm91bmRpbmdJbmNyZW1lbnQgaXMgc3BlY2lmaWVkIl9zKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fdHJhaWxpbmdaZXJvRGlzcGxheSA9IGludGxPcHRpb248VHJhaWxpbmda
ZXJvRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50cmFp
bGluZ1plcm9EaXNwbGF5LCB7IHsgImF1dG8iX3MsIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG8g
fSwgeyAic3RyaXBJZkludGVnZXIiX3MsIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRl
Z2VyIH0gfSwgInRyYWlsaW5nWmVyb0Rpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIgb3Ig
XCJzdHJpcElmSW50ZWdlclwiIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAgICAgbV9jb21wYWN0RGlzcGxh
eSA9IGludGxPcHRpb248Q29tcGFjdERpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIHsgeyAic2hvcnQiX3Ms
IENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBDb21wYWN0RGlzcGxheTo6TG9u
ZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0XCIgb3IgXCJsb25n
XCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKIAotICAgIFRyaVN0YXRlIHVzZUdyb3VwaW5nID0gaW50bEJvb2xlYW5P
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXNlR3JvdXBpbmciKSk7CisgICAgVXNlR3JvdXBpbmcgZGVmYXVsdFVzZUdyb3VwaW5nID0gVXNl
R3JvdXBpbmc6OkF1dG87CisgICAgaWYgKG1fbm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21w
YWN0KQorICAgICAgICBkZWZhdWx0VXNlR3JvdXBpbmcgPSBVc2VHcm91cGluZzo6TWluMjsKKwor
ICAgIG1fdXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uPFVzZUdyb3VwaW5n
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VH
cm91cGluZyIpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91cGluZzo6RmFsc2UsIHsgeyAi
bWluMiJfcywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJfcywgVXNlR3JvdXBpbmc6OkF1
dG8gfSwgeyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlzIH0gfSwgInVzZUdyb3VwaW5n
IG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwgXCJhdXRvXCIsIG9yIFwiYWx3
YXlzXCIiX3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CisKKyAgICBtX3NpZ25EaXNwbGF5ID0gaW50
bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRvIl9zLCBTaWduRGlzcGxheTo6
QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVyIH0sIHsgImFsd2F5cyJfcywg
U2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9zLCBTaWduRGlzcGxheTo6RXhj
ZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlIH0gfSwgInNp
Z25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIs
IFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fdXNlR3JvdXBp
bmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKLSAgICBtX3NpZ25EaXNwbGF5
ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRvIl9zLCBTaWduRGlz
cGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVyIH0sIHsgImFsd2F5
cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9zLCBTaWduRGlzcGxh
eTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwg
XCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9cIiJfcywgU2lnbkRpc3BsYXk6
OkF1dG8pOworICAgIG1fcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLAorICAg
ICAgICB7CisgICAgICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwKKyAg
ICAgICAgICAgIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJleHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6RXhwYW5kIH0sCisgICAgICAgICAgICB7ICJ0
cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LAorICAgICAgICAgICAgeyAiaGFsZkNlaWwi
X3MsIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWwgfSwKKyAgICAgICAgICAgIHsgImhhbGZGbG9vciJf
cywgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3IgfSwKKyAgICAgICAgICAgIHsgImhhbGZFeHBhbmQi
X3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9LAorICAgICAgICAgICAgeyAiaGFsZlRydW5j
Il9zLCBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYyB9LAorICAgICAgICAgICAgeyAiaGFsZkV2ZW4i
X3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW4gfQorICAgICAgICB9LCAicm91bmRpbmdNb2RlIG11
c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwiZXhwYW5kXCIsIFwidHJ1bmNcIiwg
XCJoYWxmQ2VpbFwiLCBcImhhbGZGbG9vclwiLCBcImhhbGZFeHBhbmRcIiwgXCJoYWxmVHJ1bmNc
Iiwgb3IgXCJoYWxmRXZlblwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBDU3RyaW5nIGRhdGFMb2Nh
bGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZGF0YUxvY2FsZSwgIi11LW51
LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CkBAIC0zMjksNyArMzY5LDQ4IEBAIHZvaWQg
SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwotICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dpdGNo
IChtX3JvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWNlaWxpbmciKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWZsb29yIik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoInJvdW5kaW5nLW1vZGUtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6Okhh
bGZDZWlsOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYtY2VpbGluZy4g
SWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvZThkZmVh
OWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAoV1RGOjpJQ1U6
Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLWNlaWxpbmciKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERl
ZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZGbG9vcjogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNl
aWwuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQu
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4
ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1mbG9vciIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsgLy8g
RGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJvdW5kaW5n
TW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRp
bmctbW9kZS1oYWxmLXVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2Rl
OjpIYWxmVHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1v
ZGUtaGFsZi1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpI
YWxmRXZlbjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1o
YWxmLWV2ZW4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc3dpdGNoIChtX3N0eWxl
KSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTM5MSw2ICs0NzIsOSBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1J
bnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsK
IAorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICB9CisKICAgICBzd2l0
Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlv
bkRpZ2l0czogewogICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1
L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KQEAgLTQxMCw4ICs0OTQsMzQgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJv
dW5kaW5nOgotICAgICAgICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxl
c3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsr
aSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsr
aSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Ly8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3
aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6
OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyB0cmFpbGlu
ZyB6ZXJvIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNkMzYKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDYy
LDEwICs1NzIsMzQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXplcm8iKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CisgICAgICAgIC8v
IE9ubHkgSUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdub3JlIHRoaXMg
b3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhlMDZlY2M5OWJm
ZjQ0MmRkMzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1ham9yVmVyc2lv
bigpID49IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5lZ2F0aXZlIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIHNpZ24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkv
cHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2ggKG1fdXNlR3Jv
dXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVz
ZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAt
bWluMiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAog
ICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOwogICAgIGRh
dGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tlbGV0b24pOwpA
QCAtNTI5LDYgKzY2Myw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2FzZSBTaWdu
RGlzcGxheTo6TmV2ZXI6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAgIGNhc2Ug
U2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6
CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBz
dXBwb3J0IGl0LgogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTksMTEgKzY5NCwyNyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21w
YWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgor
ICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3Vw
cG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNz
UHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1Ug
ZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHVudW1fc2V0
QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNl
R3JvdXBpbmcpOworCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5j
ZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBp
bmc6OkFsd2F5czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19N
T0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTcyNywxMSArODc4LDgxIEBA
IEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlz
cGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAgY2FzZSBT
aWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOwor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5lZ2F0aXZl
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3Vu
ZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBzd2l0Y2gg
KHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBy
ZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBy
ZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAg
IHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAg
ICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWw6Cisg
ICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVuYyJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAiaGFsZkV2
ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnRy
YWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9E
aXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAgIHJldHVy
biAic3RyaXBJZkludGVnZXIiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3Vu
ZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9yZVByZWNp
c2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VH
cm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9z
KTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0
aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICs5ODUsMjMgQEAgSlNP
YmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9y
ZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZy
YWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlv
bkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50
RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VH
cm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24i
KSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOwog
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERp
c3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2Nv
bXBhY3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2ln
bkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1iZXIo
bV9yb3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0
cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKKyAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHks
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5n
VHlwZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1OWQ0MTA3MDBm
ODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLjkzOTg1YThkMjhhNmNjOWRlMTYxZGIyM2NhMzBjMDQy
MWExODAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBj
bGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9uS2V5IDog
dWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0
aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07CitlbnVtIGNs
YXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmlj
YW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVtIGNsYXNzIElu
dGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNpb24sIExlc3NQ
cmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0YW5kYXJk
LCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
SW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0Rl
ZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlv
bik7CiAKQEAgLTEwNSw3ICsxMDYsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6
IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERp
c3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVudW0gY2xhc3Mg
Q29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNz
IFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8g
fTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBB
bHdheXMsIEV4Y2VwdFplcm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1pl
cm9EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBj
bGFzcyBVc2VHcm91cGluZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07
CisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwgRmxvb3IsIEV4
cGFuZCwgVHJ1bmMsIEhhbGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhhbGZUcnVuYywg
SGFsZkV2ZW4gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUp
OwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5
RGlzcGxheSk7CkBAIC0xMTMsNiArMTE3LDEwIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB1
bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBj
b21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0
ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0
ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGlu
Z1R5cGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VHcm91
cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0
OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKQEAgLTEzMyw2ICsxNDEsNyBAQCBj
bGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwogICAgIHVuc2lnbmVk
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fcm91bmRpbmdJbmNyZW1l
bnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3Vy
cmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OwogICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJl
bmN5U2lnbjsKQEAgLTE0MCw3ICsxNDksOSBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFj
dERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0
YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKLSAgICBib29sIG1fdXNl
R3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJhaWxpbmdaZXJvRGlzcGxheSBtX3RyYWlsaW5nWmVy
b0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH07CisgICAgVXNlR3JvdXBpbmcg
bV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5nOjpBbHdheXMgfTsKKyAgICBSb3VuZGluZ01vZGUg
bV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfTsKICAgICBJbnRsUm91
bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdp
dHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDIzZDM4NjNkMTYwMDQzMWVmNzRkZjQwYzg3
NDQ3MTc2NmQwNTE2OWEuLmY0NGUxNzNhOGZlNzUzZjg4ZjgyZGUyZTk0NzMyOTZiMzViMTVjYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcgKzYxLDY5IEBAIHZvaWQgc2V0TnVtYmVyRm9ybWF0
RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRs
SW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVt
SW50ZWdlckRpZ2l0czsKIAotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMs
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgaW50
bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBJbnRsUm91bmRpbmdQcmlvcml0
eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQcmlvcml0eT4oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCB7
IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsgIm1vcmVQcmVjaXNp
b24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0sIHsgImxlc3NQcmVj
aXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uIH0gfSwgInJvdW5k
aW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVByZWNpc2lvblwiLCBv
ciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBpZiAoIW1pbmltdW1G
cmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVm
aW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25l
ZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVk
IHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNp
ZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAg
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVk
VmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlv
bkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGln
aXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBp
cyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNV
bmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQo
KTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAg
Ym9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1By
aW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVlZEZkID0gKCFoYXNTZCAmJiBub3RhdGlvbiAhPSBJ
bnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5n
UHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAobmVlZFNkKSB7CisgICAgICAgIGlmIChoYXNTZCkg
eworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERl
ZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNW
YWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAxLCAyMSwg
MSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHRO
dW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwg
dm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgICAgIGludGxJ
bnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyMTsKICAgICAgICAgfQotICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwot
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZy
YWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5vdGF0aW9u
ID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91
bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOwotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG5lZWRGZCkgeworICAgICAgICBpZiAoaGFzRmQpIHsKKyAgICAgICAg
ICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7CisgICAg
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgICAg
ICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAg
ICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxz
ZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQorICAgICAgICAg
ICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAgICBlbHNlIGlm
IChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVk
IG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiX3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFj
dGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0
aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgICAgICB9CiAg
ICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGludGxJbnN0YW5jZS0+
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0Owor
ICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7CisgICAgICAgIGlmIChyb3VuZGluZ1ByaW9yaXR5
ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNp
b247CisgICAgICAgIGVsc2UgaWYgKHJvdW5kaW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJp
b3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBp
ZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFj
dGlvbkRpZ2l0czsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjsKKyAgICAgICAgaW50bElu
c3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJ
dGVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaAppbmRleCBkOGIwYWJhNjI3MjRlYjU1ZmJlNWFmZDc2NTdlNGNhNTUyYTFiNGJi
Li4yYjU0MDlkNDhlYjFlNWVlYWE2MDJjM2E1MmIxZTg4MzkxMmM3NWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTE1MSw2
ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KICAgICByZXR1cm4gZmFsbGJhY2s7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+CitSZXN1bHRUeXBlIGludGxTdHJp
bmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVlVmFsdWUsIFJl
c3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxBU0NJ
SUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbCBub3RGb3VuZE1lc3Nh
Z2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0bWwjc2VjLWdl
dHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPiAwKTsK
KworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVy
biBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpZiAodmFsdWUuaXNCb29s
ZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZVZhbHVl
OworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFsdWUudG9Cb29sZWFuKGdsb2JhbE9i
amVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAg
ICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICByZXR1cm4gZmFsc3lWYWx1ZTsKKwor
ICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmIChlbnRy
eS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuc2Vj
b25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBub3RGb3VuZE1lc3NhZ2UpKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsbGJhY2s7Cit9CiAKIEFM
V0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihVQ2hhciBjaGFy
YWN0ZXIpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442293</attachid>
            <date>2021-10-24 00:55:54 -0700</date>
            <delta_ts>2021-10-24 01:15:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024005553.patch</filename>
            <type>text/plain</type>
            <size>12505</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li4yMDAzNzFiMmM1NDhlYjU5
Nzg1MThhNDE4MTBjZTJhYTc1NWFlOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKwogMjAyMS0x
MC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc4MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJl
YTYxYzcwOTU3NmRkYWYuLjE2NzA1NTM5MTg3ODBmMTllZjVkMTllMzE2NmE4NDkxYWQ2OGNlYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtMjIxLDYgKzIyMSw3IEBACiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8o
c2Vjb25kcykgXAogICAgIG1hY3JvKHNlZ21lbnQpIFwKKyAgICBtYWNybyhzZWxlY3RSYW5nZSkg
XAogICAgIG1hY3JvKHNlbnNpdGl2aXR5KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8o
c2l6ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5jcHAKaW5kZXggZDhiYzk2NjlmY2JhYzJlMjA5YWU0NTRkNjJiZmMzZDI4YTM1ZTQ4OS4u
YzE4Y2I1M2UyNjIyY2ZjZTJjZjFhZTJjNGFjMWE0NTJjMWVlMjA3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0xMDcsOCAr
MTA3LDkgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCAwLCAzLCBJbnRsTm90YXRpb246
OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisg
ICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUws
IG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsK
KyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9j
YWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMzEs
MTEgKzEzMiw1NCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIH0KIAogICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQ
bHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9s
b2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZ
UEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1
cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxl
dGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6
T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxS
dWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7Cisg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3Mv
dXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRo
CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJQ1U6
Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1
c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1h
dF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7Cisg
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmlj
YW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
IC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgICAgICAvLyBEbyBub3Qgc2V0IGFu
eXRoaW5nLgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBz
a2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhz
a2VsZXRvbik7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBJQ1VEZWxl
dGVyPHVudW1yZl9jbG9zZT4+KHVudW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJ
ZGVudGl0eUZhbGxiYWNrKHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQo
KSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1f
SURFTlRJVFlfRkFMTEJBQ0tfU0lOR0xFX1ZBTFVFLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAm
c3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxS
dWxlcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5yZXNvbHZl
ZG9wdGlvbnMKQEAgLTIwNyw0ICsyNTEsMzkgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNl
bGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKIH0K
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTVmFsdWUgSW50bFBs
dXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChzdGFydCA+IGVuZCkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlz
IGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6
dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3Nl
UmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisKKyAgICB1
bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3Rh
cnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisKKyAgICBjb25zdCBV
Rm9ybWF0dGVkVmFsdWUqIHZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdl
IG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisKKyAgICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgY29u
c3QgVUNoYXIqIHN0cmluZyA9IHVmbXR2YWxfZ2V0U3RyaW5nKHZhbHVlLCAmbGVuZ3RoLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBw
bHVyYWwgdmFsdWUiX3MpOworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5n
LCBsZW5ndGgpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKaW5kZXggNmQzYWNhYjg0
ZTgxNGU1ZjdjMDdkMDI0ZjNlMjVmZjJlNWYwZjZlNC4uYjI3YThkOWYwYTEzN2QwZjQzM2VkNjM1
NzZmOWQyY2Q0NWViOTRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzLmgKQEAgLTMxLDYgKzMxLDE2IEBACiAjaW5jbHVkZSA8dW5pY29kZS91
cGx1cmFscnVsZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgog
CisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2lmIFVf
SUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcnJhbmdlZm9ybWF0dGVy
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRl
bnNpb25LZXkgOiB1aW50OF90OwpAQCAtNjQsNiArNzQsMTAgQEAgY2xhc3MgSW50bFBsdXJhbFJ1
bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTVmFsdWUgc2VsZWN0
KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKSBjb25zdDsKICAgICBKU09iamVjdCogcmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNWYWx1ZSBzZWxlY3RSYW5nZShKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBJbnRsUGx1cmFsUnVsZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CkBAIC03OCw2ICs5Miw5IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxV
UGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJl
ckZvcm1hdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2U+PiBtX251bWJlclJhbmdlRm9ybWF0dGVyOworI2VuZGlmCiAKICAgICBTdHJpbmcgbV9sb2Nh
bGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuY3BwCmluZGV4IGM4MGJmYTIyMjNmZDUwZThiOTc4MThjZWQ0YjA3NThiYmNkZTZjMjcu
LjkyYmJmZjJmOTZmMjY1YmUwNWJmY2YyYmYyN2JmOWQwNmJjZDkzMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3Qp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlRnVuY1NlbGVjdFJhbmdlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogCiB9CkBAIC01MCwx
MCArNTEsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiSW50bC5QbHVyYWxSdWxlcyIsICZCYXNlOjoKIEBlbmQKICovCiAKLUludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIApAQCAtNjcsMTEgKzY4LDE0IEBAIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit2b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWxlY3RSYW5nZSwgaW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlRnVuY1NlbGVjdFJhbmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMCk7CisjZW5kaWYKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05Miw2ICs5NiwyNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0K
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51
bWJlcmZvcm1hdC12My9vdXQvcGx1cmFscnVsZXMvZGlmZi5odG1sI3NlYy1pbnRsLnBsdXJhbHJ1
bGVzLnByb3RvdHlwZS5zZWxlY3RyYW5nZQorICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVs
ZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIXBsdXJhbFJ1bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1
bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBs
dXJhbFJ1bGVzIl9zKSk7CisKKyAgICBkb3VibGUgc3RhcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGRvdWJsZSBlbmQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1
bGVzLT5zZWxlY3RSYW5nZShnbG9iYWxPYmplY3QsIHN0YXJ0LCBlbmQpKSk7Cit9CisjZW5kaWYK
KwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaAppbmRleCA2ZmFhM2E0Zjc4YWVhNTk4NDMyY2IxMzAzN2YxMDM1OTM2MjUwODRiLi42
MWUwOGIyZjRkMmNhYjA2M2M3NWM2OTc2YzFiMzYwZmFmZTVmZDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="commit-queue"
          id="466766"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442294</attachid>
            <date>2021-10-24 01:10:08 -0700</date>
            <delta_ts>2021-10-24 01:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024011007.patch</filename>
            <type>text/plain</type>
            <size>46220</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5mNjFiMzc4ZDM1YjU3ZWFk
ZmM4ZGI5N2MzMGUzNWU3OGFmZTgyNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6c2V0TnVtYmVyRm9ybWF0RGlnaXRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OmludGxTdHJpbmdPckJvb2xlYW5PcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFs
aXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFu
Z2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmg6CisKIDIwMjEtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBuaXRzIGZyb20gMjMyMDE5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5jYWMyOTc4Y2MyZDdiMzA5YWFhYzBmYTkxZGZiNGJhMDZkNDQxNzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0zOTEsNiAr
NDcxLDkgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQogICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcwJyk7CiAKKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxKSB7Cisg
ICAgfQorCiAgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgewogICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCkBAIC00MTAsOCArNDkzLDM0
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcjJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKLSAgICAgICAgLy8gRG8gbm90IHNldCBhbnl0aGluZy4K
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5
ZmQwNGE4MzY0CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNwcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZy
YWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcj
Jyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcj
Jyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50
bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIC8vIENvbmZpZ3VyZSB0aGlzIGp1c3QgYWZ0ZXIgcHJlY2lzaW9uLgor
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3Mv
dXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN0cmFpbGluZy16ZXJv
LWRpc3BsYXkKKyAgICBzd2l0Y2ggKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFp
bGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlu
a2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2
OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTQ2MiwxMCArNTcxLDM0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4
Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0
aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3Bs
YXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQu
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFh
YTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRp
bmcpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3Vu
dGluZy1uZWdhdGl2ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAg
c3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8i
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9T
dHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJv
c2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2NjIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFs
d2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtl
ZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTU5
LDExICs2OTMsMjcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lU
UywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBz
aW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9V
UElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykg
eworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC03
MjcsMTEgKzg3Nyw4MSBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAgICAgIHJldHVybiAiYWx3YXlz
Il9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CiAgICAgICAgIHJldHVybiAi
ZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAg
cmV0dXJuICJuZWdhdGl2ZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUp
Cit7CisgICAgc3dpdGNoIChyb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAidHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1cm4gImhhbGZDZWlsIl9zOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAgICAgIHJldHVybiAiaGFsZkZsb29yIl9zOworICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICByZXR1cm4gImhhbGZFeHBh
bmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgcmV0dXJu
ICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFdmVuOgorICAgICAg
ICByZXR1cm4gImhhbGZFdmVuIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3Bs
YXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVyb0Rpc3Bs
YXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVy
biAiYXV0byJfczsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2Vy
OgorICAgICAgICByZXR1cm4gInN0cmlwSWZJbnRlZ2VyIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxS
b3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICByZXR1cm4gImF1dG8i
X3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAgICAgICBy
ZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNz
UHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gImxlc3NQcmVjaXNpb24iX3M7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
K30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZNJiB2bSwg
VXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7CisgICAgc3dpdGNoICh1c2VHcm91cGluZykgewor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZh
bHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
CiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTc2NCwx
NCArOTg0LDIzIEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpz
TnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBq
c051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpM
ZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3Vz
ZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91
cGluZykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmco
bV9ub3RhdGlvbikpKTsKICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBh
Y3QpCiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERp
c3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOwor
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNy
ZW1lbnQsIGpzTnVtYmVyKG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgdHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
b3VuZGluZ1ByaW9yaXR5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJpb3JpdHlT
dHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAz
OGE3NzBjNTlkNDEwNzAwZjg5YzQ5Zjc2OWE5MTQ5ZGJjYTg1N2RlLi45Mzk4NWE4ZDI4YTZjYzlk
ZTE2MWRiMjNjYTMwYzA0MjFhMTgwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC00OCw3ICs0OCw4IEBAIGNsYXNzIEludGxG
aWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBSZWxldmFu
dEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6
IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3Vu
ZGluZyB9OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9u
RGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9
OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRvLCBNb3Jl
UHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVp
bnQ4X3QgeyBTdGFuZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKIHRl
bXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0LCBJbnRsTm90YXRpb24pOwogCkBAIC0xMDUsNyArMTA2LDEwIEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFz
cyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBl
bnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsK
ICAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07
Ci0gICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3
YXlzLCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3Qg
eyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0g
Y2xhc3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdl
ciB9OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIs
IEF1dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7
IENlaWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhw
YW5kLCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0
eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxh
eVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDYgKzExNywxMCBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkpOwogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkpOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5n
WmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdQcmlvcml0eVN0
cmluZyhJbnRsUm91bmRpbmdUeXBlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB1c2VHcm91cGluZ1Zh
bHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlv
bj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCkBAIC0x
MzMsNiArMTQxLDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMg
fTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVj
aW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKICAgICBDdXJy
ZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMTQ5LDkgQEAgY2xhc3MgSW50bE51
bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBDb21wYWN0
RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIEludGxOb3RhdGlvbiBtX25vdGF0aW9uIHsg
SW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRpc3BsYXk7
Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIFRyYWlsaW5nWmVyb0Rpc3Bs
YXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byB9Owor
ICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91cGluZzo6QWx3YXlzIH07Cisg
ICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5k
IH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAyM2QzODYzZDE2
MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi5mNDRlMTczYThmZTc1M2Y4OGY4MmRlMmU5
NDczMjk2YjM1YjE1Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTYxLDQ3ICs2MSw2OSBAQCB2b2lk
IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRlZ2Vy
RGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmltdW1TaWduaWZp
Y2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICB1bnNp
Z25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGludGxJbnN0
YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgSW50
bFJvdW5kaW5nUHJpb3JpdHkgcm91bmRpbmdQcmlvcml0eSA9IGludGxPcHRpb248SW50bFJvdW5k
aW5nUHJpb3JpdHk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91
bmRpbmdQcmlvcml0eSwgeyB7ICJhdXRvIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0byB9
LCB7ICJtb3JlUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9yZVByZWNpc2lv
biB9LCB7ICJsZXNzUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6TGVzc1ByZWNp
c2lvbiB9IH0sICJyb3VuZGluZ1ByaW9yaXR5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm1v
cmVQcmVjaXNpb25cIiwgb3IgXCJsZXNzUHJlY2lzaW9uXCIiX3MsIEludGxSb3VuZGluZ1ByaW9y
aXR5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0g
ICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhp
bXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7Ci0gICAgICAgIGludGxJbnN0
YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsK
LSAgICAgICAgdW5zaWduZWQgc3BlY2lmaWVkTWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERl
ZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1
ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZp
bmVkVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmlu
ZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIGlmIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgIT0gdW5kZWZpbmVkVmFs
dWUpCi0gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptaW4o
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGln
aXRzKTsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVkTWluaW11bUZyYWN0aW9uRGln
aXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZp
ZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rp
b25EaWdpdHMsIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCAoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpz
VW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpLCB2
bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKG1p
bmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgewotICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBib29sIGhhc1NkID0gIW1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNGZCA9ICFtaW5pbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFzU2QgfHwgcm91bmRpbmdQcmlvcml0eSAh
PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAgICBib29sIG5lZWRGZCA9ICghaGFzU2Qg
JiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB8fCByb3VuZGluZ1ByaW9yaXR5
ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworCisgICAgaWYgKG5lZWRTZCkgeworICAg
ICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Cisg
ICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7CisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjE7CiAgICAgICAgIH0K
LSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1G
cmFjdGlvbkRpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKLSAgICAgICAgaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3Vu
ZGluZzsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChuZWVkRmQpIHsKKyAgICAgICAgaWYgKGhh
c0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSBV
SU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0g
aW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwg
dW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGlu
dGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVu
ZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZp
bmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjpt
aW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRW
YWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOworICAg
ICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUg
PSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKLSAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKLSAg
ICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdDsKKyAgICBpZiAobmVlZFNkIHx8IG5lZWRGZCkgeworICAgICAgICBpZiAo
cm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9yZVByZWNpc2lvbikK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBlbHNlIGlmIChyb3VuZGluZ1ByaW9yaXR5ID09
IEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb247
CisgICAgICAgIGVsc2UgaWYgKGhhc1NkKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3Jv
dW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247
CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyOworICAgIH0KIH0KIAog
Y2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNmEwMGFiNzA4OWNlZjg2YjZhZjVhODRj
MDE5NmU4ZjQxMjQ2MzYxYS4uNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oCkBAIC0xNTEsNiArMTUxLDQ1IEBAIFJlc3VsdFR5cGUgaW50bE9wdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOCiAgICAg
cmV0dXJuIGZhbGxiYWNrOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgorUmVz
dWx0VHlwZSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHksIFJlc3VsdFR5
cGUgdHJ1ZVZhbHVlLCBSZXN1bHRUeXBlIGZhbHN5VmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVy
YWwgbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQoreworICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24v
ZGlmZi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24KKworICAgIEFTU0VSVCh2YWx1
ZXMuc2l6ZSgpID4gMCk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFvcHRpb25z
KQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
aWYgKHZhbHVlLmlzQm9vbGVhbigpICYmIHZhbHVlLmFzQm9vbGVhbigpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWVWYWx1ZTsKKworICAgICAgICBib29sIHZhbHVlQm9vbGVhbiA9IHZhbHVlLnRv
Qm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWVCb29sZWFuKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHN5VmFsdWU7CisKKyAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogdmFsdWVzKSB7CisgICAg
ICAgICAgICBpZiAoZW50cnkuZmlyc3QgPT0gc3RyaW5nVmFsdWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGVudHJ5LnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbm90Rm91
bmRNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIGZh
bGxiYWNrOworfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBh
cmlzb24oVUNoYXIgY2hhcmFjdGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggZDhiYzk2NjlmY2JhYzJlMjA5YWU0NTRk
NjJiZmMzZDI4YTM1ZTQ4OS4uN2Q1YjJiNmQ3MTZiMWY3YjA4MmYzYWQzY2I0YjVhZDY5NDIyNTlm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCkBAIC0xMDcsOCArMTA3LDkgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCAw
LCAzLCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogCisgICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQgPSBz
dGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1f
b3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51
bGxwdHIsICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxV
TnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1B
TCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjUsMTcgKzEyNiw3MyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQog
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5f
U0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJ
Q0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9wbHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0
cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBl
KG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJB
TF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBt
X3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVz
RGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5
cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5B
TCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1
cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVy
OworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOwor
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13
aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2
NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnMCcpOworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czog
eworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFz
dGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWdu
aWZpY2FudC1kaWdpdHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERp
Z2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWlu
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNwcmVjaXNp
b24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOworICAg
IFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlPj4odW51bXJmX29wZW5G
b3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2soc2tlbGV0b25WaWV3LnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1f
UkFOR0VfQ09MTEFQU0VfQVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19TSU5HTEVfVkFMVUUs
IGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwucGx1
cmFscnVsZXMucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpAQCAtMTU5LDggKzIxNiwxMiBAQCBK
U09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVj
aXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE4NCw3ICsyNDUsMjAgQEAgSlNPYmplY3QqIElu
dGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOworICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJhdXRvIl9zKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIm1vcmVQcmVjaXNpb24iX3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
bGVzc1ByZWNpc2lvbiJfcykpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
b3B0aW9uczsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlcGx1
cmFsCkBAIC0yMDcsNCArMjgxLDM5IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVuZ3RoKSk7CiB9CiAKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU1ZhbHVlIEludGxQbHVyYWxS
dWxlczo6c2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0
dGVyKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJn
ZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3Vs
dD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgdW51bXJm
X2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBl
bmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgY29uc3QgVUZvcm1h
dHRlZFZhbHVlKiB2YWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBw
bHVyYWwgdmFsdWUiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0IFVD
aGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyh2YWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFs
IHZhbHVlIl9zKTsKKworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHN0cmluZywgbGVu
Z3RoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRl
NWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLmIyN2E4ZDlmMGExMzdkMGY0MzNlZDYzNTc2Zjlk
MmNkNDVlYjk0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oCkBAIC0zMSw2ICszMSwxNiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJh
bHJ1bGVzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAorI2lm
ICFkZWZpbmVkKEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpZiBVX0lDVV9W
RVJTSU9OX01BSk9SX05VTSA+PSA2OAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIgMQorI2VuZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9u
S2V5IDogdWludDhfdDsKQEAgLTY0LDYgKzc0LDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0ds
b2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwpAQCAtNzgsNiArOTIsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJh
bFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXQ7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlPj4g
bV9udW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwog
ICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lY2Ri
ZTE0Njk4N2ZmNjdlZmM0YjBmYzRhZWI4NzRhMTY5ZDQ3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3RSYW5nZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUx
LDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKQEAgLTY3LDExICs2OCwxNSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6Oklu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
fQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2Jq
ZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0
UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5j
U2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtOTIsNiArOTcsMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0
KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVz
L2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAg
ICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFs
UnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxl
cykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworCisgICAgZG91Ymxl
IHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0
LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihp
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5
ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2
MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
CiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="commit-queue"
          id="466767"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442295</attachid>
            <date>2021-10-24 01:13:33 -0700</date>
            <delta_ts>2021-10-24 02:07:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024011332.patch</filename>
            <type>text/plain</type>
            <size>46268</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5mNjFiMzc4ZDM1YjU3ZWFk
ZmM4ZGI5N2MzMGUzNWU3OGFmZTgyNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6c2V0TnVtYmVyRm9ybWF0RGlnaXRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OmludGxTdHJpbmdPckJvb2xlYW5PcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFs
aXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFu
Z2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmg6CisKIDIwMjEtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBuaXRzIGZyb20gMjMyMDE5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5jYWMyOTc4Y2MyZDdiMzA5YWFhYzBmYTkxZGZiNGJhMDZkNDQxNzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0zOTEsNiAr
NDcxLDkgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQogICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcwJyk7CiAKKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxKSB7Cisg
ICAgfQorCiAgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgewogICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCkBAIC00MTAsOCArNDkzLDM0
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcjJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKLSAgICAgICAgLy8gRG8gbm90IHNldCBhbnl0aGluZy4K
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5
ZmQwNGE4MzY0CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNwcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZy
YWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcj
Jyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcj
Jyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50
bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIC8vIENvbmZpZ3VyZSB0aGlzIGp1c3QgYWZ0ZXIgcHJlY2lzaW9uLgor
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3Mv
dXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN0cmFpbGluZy16ZXJv
LWRpc3BsYXkKKyAgICBzd2l0Y2ggKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFp
bGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlu
a2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2
OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTQ2MiwxMCArNTcxLDM0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4
Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0
aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3Bs
YXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQu
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFh
YTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRp
bmcpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3Vu
dGluZy1uZWdhdGl2ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAg
c3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8i
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9T
dHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJv
c2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2NjIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFs
d2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgIGNhc2UgU2lnbkRp
c3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtl
ZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTU5
LDExICs2OTMsMjcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lU
UywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBz
aW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9V
UElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykg
eworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC03
MjcsMTEgKzg3Nyw4MSBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAgICAgIHJldHVybiAiYWx3YXlz
Il9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CiAgICAgICAgIHJldHVybiAi
ZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAg
cmV0dXJuICJuZWdhdGl2ZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUp
Cit7CisgICAgc3dpdGNoIChyb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAidHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1cm4gImhhbGZDZWlsIl9zOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAgICAgIHJldHVybiAiaGFsZkZsb29yIl9zOworICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICByZXR1cm4gImhhbGZFeHBh
bmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgcmV0dXJu
ICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFdmVuOgorICAgICAg
ICByZXR1cm4gImhhbGZFdmVuIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3Bs
YXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVyb0Rpc3Bs
YXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVy
biAiYXV0byJfczsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2Vy
OgorICAgICAgICByZXR1cm4gInN0cmlwSWZJbnRlZ2VyIl9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxS
b3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICByZXR1cm4gImF1dG8i
X3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAgICAgICBy
ZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNz
UHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gImxlc3NQcmVjaXNpb24iX3M7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
K30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZNJiB2bSwg
VXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7CisgICAgc3dpdGNoICh1c2VHcm91cGluZykgewor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZh
bHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
CiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTc2NCwx
NCArOTg0LDIzIEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpz
TnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBq
c051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpM
ZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25E
aWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1h
eGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3Vz
ZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91
cGluZykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmco
bV9ub3RhdGlvbikpKTsKICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBh
Y3QpCiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERp
c3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOwor
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNy
ZW1lbnQsIGpzTnVtYmVyKG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgdHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rp
c3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
b3VuZGluZ1ByaW9yaXR5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJpb3JpdHlT
dHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAz
OGE3NzBjNTlkNDEwNzAwZjg5YzQ5Zjc2OWE5MTQ5ZGJjYTg1N2RlLi45Mzk4NWE4ZDI4YTZjYzlk
ZTE2MWRiMjNjYTMwYzA0MjFhMTgwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC00OCw3ICs0OCw4IEBAIGNsYXNzIEludGxG
aWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBSZWxldmFu
dEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6
IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3Vu
ZGluZyB9OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9u
RGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9
OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRvLCBNb3Jl
UHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVp
bnQ4X3QgeyBTdGFuZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKIHRl
bXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0LCBJbnRsTm90YXRpb24pOwogCkBAIC0xMDUsNyArMTA2LDEwIEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFz
cyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBl
bnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsK
ICAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07
Ci0gICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3
YXlzLCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3Qg
eyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0g
Y2xhc3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdl
ciB9OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIs
IEF1dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7
IENlaWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhw
YW5kLCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0
eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxh
eVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDYgKzExNywxMCBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkpOwogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkpOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5n
WmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdQcmlvcml0eVN0
cmluZyhJbnRsUm91bmRpbmdUeXBlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB1c2VHcm91cGluZ1Zh
bHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlv
bj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCkBAIC0x
MzMsNiArMTQxLDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMg
fTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVj
aW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKICAgICBDdXJy
ZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMTQ5LDkgQEAgY2xhc3MgSW50bE51
bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBDb21wYWN0
RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIEludGxOb3RhdGlvbiBtX25vdGF0aW9uIHsg
SW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRpc3BsYXk7
Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIFRyYWlsaW5nWmVyb0Rpc3Bs
YXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byB9Owor
ICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91cGluZzo6QWx3YXlzIH07Cisg
ICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5k
IH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5
cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAyM2QzODYzZDE2
MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi5mNDRlMTczYThmZTc1M2Y4OGY4MmRlMmU5
NDczMjk2YjM1YjE1Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTYxLDQ3ICs2MSw2OSBAQCB2b2lk
IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRlZ2Vy
RGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmltdW1TaWduaWZp
Y2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICB1bnNp
Z25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGludGxJbnN0
YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgSW50
bFJvdW5kaW5nUHJpb3JpdHkgcm91bmRpbmdQcmlvcml0eSA9IGludGxPcHRpb248SW50bFJvdW5k
aW5nUHJpb3JpdHk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91
bmRpbmdQcmlvcml0eSwgeyB7ICJhdXRvIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0byB9
LCB7ICJtb3JlUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9yZVByZWNpc2lv
biB9LCB7ICJsZXNzUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6TGVzc1ByZWNp
c2lvbiB9IH0sICJyb3VuZGluZ1ByaW9yaXR5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm1v
cmVQcmVjaXNpb25cIiwgb3IgXCJsZXNzUHJlY2lzaW9uXCIiX3MsIEludGxSb3VuZGluZ1ByaW9y
aXR5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0g
ICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhp
bXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7Ci0gICAgICAgIGludGxJbnN0
YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsK
LSAgICAgICAgdW5zaWduZWQgc3BlY2lmaWVkTWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERl
ZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1
ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZp
bmVkVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmlu
ZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0g
ICAgICAgIGlmIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgIT0gdW5kZWZpbmVkVmFs
dWUpCi0gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0gc3RkOjptaW4o
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGln
aXRzKTsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVkTWluaW11bUZyYWN0aW9uRGln
aXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZp
ZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rp
b25EaWdpdHMsIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsKLSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCAoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpz
VW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpLCB2
bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKG1p
bmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgewotICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBib29sIGhhc1NkID0gIW1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNGZCA9ICFtaW5pbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFzU2QgfHwgcm91bmRpbmdQcmlvcml0eSAh
PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAgICBib29sIG5lZWRGZCA9ICghaGFzU2Qg
JiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB8fCByb3VuZGluZ1ByaW9yaXR5
ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworCisgICAgaWYgKG5lZWRTZCkgeworICAg
ICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Cisg
ICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7CisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjE7CiAgICAgICAgIH0K
LSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1G
cmFjdGlvbkRpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKLSAgICAgICAgaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3Vu
ZGluZzsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChuZWVkRmQpIHsKKyAgICAgICAgaWYgKGhh
c0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSBV
SU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0g
aW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwg
dW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGlu
dGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVu
ZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZp
bmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjpt
aW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRW
YWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOworICAg
ICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVs
dDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUg
PSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKLSAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKLSAg
ICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdDsKKyAgICBpZiAobmVlZFNkIHx8IG5lZWRGZCkgeworICAgICAgICBpZiAo
cm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9yZVByZWNpc2lvbikK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBlbHNlIGlmIChyb3VuZGluZ1ByaW9yaXR5ID09
IEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb247
CisgICAgICAgIGVsc2UgaWYgKGhhc1NkKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3Jv
dW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247
CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyOworICAgIH0KIH0KIAog
Y2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNmEwMGFiNzA4OWNlZjg2YjZhZjVhODRj
MDE5NmU4ZjQxMjQ2MzYxYS4uNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oCkBAIC0xNTEsNiArMTUxLDQ1IEBAIFJlc3VsdFR5cGUgaW50bE9wdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOCiAgICAg
cmV0dXJuIGZhbGxiYWNrOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgorUmVz
dWx0VHlwZSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHksIFJlc3VsdFR5
cGUgdHJ1ZVZhbHVlLCBSZXN1bHRUeXBlIGZhbHN5VmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVy
YWwgbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQoreworICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24v
ZGlmZi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24KKworICAgIEFTU0VSVCh2YWx1
ZXMuc2l6ZSgpID4gMCk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFvcHRpb25z
KQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb3B0aW9u
cy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
aWYgKHZhbHVlLmlzQm9vbGVhbigpICYmIHZhbHVlLmFzQm9vbGVhbigpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWVWYWx1ZTsKKworICAgICAgICBib29sIHZhbHVlQm9vbGVhbiA9IHZhbHVlLnRv
Qm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWVCb29sZWFuKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHN5VmFsdWU7CisKKyAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogdmFsdWVzKSB7CisgICAg
ICAgICAgICBpZiAoZW50cnkuZmlyc3QgPT0gc3RyaW5nVmFsdWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGVudHJ5LnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbm90Rm91
bmRNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIGZh
bGxiYWNrOworfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBh
cmlzb24oVUNoYXIgY2hhcmFjdGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggZDhiYzk2NjlmY2JhYzJlMjA5YWU0NTRk
NjJiZmMzZDI4YTM1ZTQ4OS4uN2Q1YjJiNmQ3MTZiMWY3YjA4MmYzYWQzY2I0YjVhZDY5NDIyNTlm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCkBAIC0xMDcsOCArMTA3LDkgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxp
emVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCAw
LCAzLCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogCisgICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQgPSBz
dGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1f
b3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51
bGxwdHIsICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxV
TnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1B
TCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjUsMTcgKzEyNiw3MyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5p
dGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQog
ICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5f
U0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJ
Q0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9wbHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0
cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBl
KG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJB
TF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBt
X3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVz
RGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5
cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5B
TCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1
cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVy
OworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOwor
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13
aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2
NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnMCcpOworCisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uCisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czog
eworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFz
dGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNzaWdu
aWZpY2FudC1kaWdpdHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERp
Z2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWlu
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNwcmVjaXNp
b24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOworICAg
IFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlPj4odW51bXJmX29wZW5G
b3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2soc2tlbGV0b25WaWV3LnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1f
UkFOR0VfQ09MTEFQU0VfQVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19TSU5HTEVfVkFMVUUs
IGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwucGx1
cmFscnVsZXMucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpAQCAtMTU5LDggKzIxNiwxMiBAQCBK
U09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVj
aXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE4NCw3ICsyNDUsMjAgQEAgSlNPYmplY3QqIElu
dGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOworICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJhdXRvIl9zKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIm1vcmVQcmVjaXNpb24iX3MpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
bGVzc1ByZWNpc2lvbiJfcykpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
b3B0aW9uczsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlcGx1
cmFsCkBAIC0yMDcsNCArMjgxLDM5IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVuZ3RoKSk7CiB9CiAKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU1ZhbHVlIEludGxQbHVyYWxS
dWxlczo6c2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0
dGVyKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJn
ZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3Vs
dD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgdW51bXJm
X2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBl
bmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgY29uc3QgVUZvcm1h
dHRlZFZhbHVlKiB2YWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBw
bHVyYWwgdmFsdWUiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0IFVD
aGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyh2YWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFs
IHZhbHVlIl9zKTsKKworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHN0cmluZywgbGVu
Z3RoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRl
NWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLmIyN2E4ZDlmMGExMzdkMGY0MzNlZDYzNTc2Zjlk
MmNkNDVlYjk0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oCkBAIC0zMSw2ICszMSwxNiBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJh
bHJ1bGVzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAorI2lm
ICFkZWZpbmVkKEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpZiBVX0lDVV9W
RVJTSU9OX01BSk9SX05VTSA+PSA2OAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIgMQorI2VuZGlmCisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9u
S2V5IDogdWludDhfdDsKQEAgLTY0LDYgKzc0LDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0ds
b2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwpAQCAtNzgsNiArOTIsOSBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJh
bFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXQ7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlPj4g
bV9udW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwog
ICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5
ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOwor
I2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwu
UGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAK
QEAgLTY3LDExICs3MCwxNSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lk
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTIsNiArOTksMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1By
b3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9i
amVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRU
RVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVu
Y1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRt
bCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1
cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwg
ZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMw
MzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRl
OgogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442296</attachid>
            <date>2021-10-24 02:07:14 -0700</date>
            <delta_ts>2021-10-24 02:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024020713.patch</filename>
            <type>text/plain</type>
            <size>53200</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li43ZWQxMzJkODkyNzc3ZmNl
YTIwMzZhZWU1YWFhYTlkMGJjYjI4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1
cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VU51bWJlclJhbmdl
Rm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxS
dWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1
bGVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OnNlbGVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
UmFuZ2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmg6CisKIDIwMjEtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hh
dWRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBuaXRzIGZyb20gMjMyMDE5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNkZjNhNjE4NmY2M2Y4MzQ0MmRmMTdjZTI5MzQyMDQyODkz
ZjJiZGYuLjg0MDcyYTg4MzU4NGNiNzc0ZjdhOTFlNDIyOWJkZDIzZWFjOGNjNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ1LDYgKzE4NDUsNyBAQAogCQlFMzA3MTc4QzI0
Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8q
IEludGxMb2NhbGVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0
IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzA3MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExv
Y2FsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNB
RkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcy
NzI1NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyog
SW50bFBsdXJhbFJ1bGVzLmNwcCAqLzsgfTsKIAkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMEU4QTRFMjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmggKi87IH07CiAJCUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBU
ZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzBFOEE1MDI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICov
OyB9OwogCQlFMzBFOEE1NzI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzBFOEE1MTI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgg
Ki87IH07CkBAIC0xMTgzNCw2ICsxMTgzNSw3IEBACiAJCQkJNUM0MTk2NjIyMjcwRTAwMDAwNDdC
N0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNjY0NDFFMjU0NDA5QjMwMDAxODc2RiAvKiBJ
bnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzA4NzNFNzI3MjU1OTQxMDA1
M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU4NTQz
MjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMGUyM2Ey
ZjM2YzEyNWU5NjdmMGVmYTVjNGQ5Yjk4ZGE4OGNlYzEzLi5jMjIxNjc0YmM2YzMwOTViNjY5MmEy
MDMzNTllOGY1M2MxY2RhODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04NDAs
NyArODQwLDcgQEAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAogcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxPYmplY3QuY3BwCi1ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAKK3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBAbm8tdW5pZnkgLy8gQ29uZmluZSBVX0hJ
REVfRFJBRlRfQVBJJ3MgZWZmZWN0IHRvIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc4MjhkMDA4YTg1MzQ2
MWU0OGUzNmQyZmJlYTYxYzcwOTU3NmRkYWYuLjRjZWQ1MjU3MGNkOTVlNDY1NDBiZGMwODU2N2U4
MGI5YjdjOTExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjE3LDEwICsyMTcsMTIgQEAKICAgICBtYWNybyhyZXNvbHZl
KSBcCiAgICAgbWFjcm8ocm91bmRpbmdJbmNyZW1lbnQpIFwKICAgICBtYWNybyhyb3VuZGluZ01v
ZGUpIFwKKyAgICBtYWNybyhyb3VuZGluZ1ByaW9yaXR5KSBcCiAgICAgbWFjcm8oc2NyaXB0KSBc
CiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8oc2Vjb25kcykgXAogICAgIG1hY3JvKHNl
Z21lbnQpIFwKKyAgICBtYWNybyhzZWxlY3RSYW5nZSkgXAogICAgIG1hY3JvKHNlbnNpdGl2aXR5
KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApAQCAtMjQ5LDYgKzI1MSw3
IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikg
XAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFjcm8odHJhaWxpbmdaZXJvRGlzcGxheSkg
XAogICAgIG1hY3JvKHR5cGUpIFwKICAgICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2Rl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IGZjMzIzNzAzMjAyMmI0YzZkNjdkZDgxNTU5ZWMzMzViNTZiZDBkZmYuLmNh
YzI5NzhjYzJkN2IzMDlhYWFjMGZhOTFkZmI0YmEwNmQ0NDE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMDksMTQg
KzMwOSw1MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKKyAgICBtX3JvdW5kaW5n
SW5jcmVtZW50ID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCAxLCA1MDAwLCAxKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
dW5zaWduZWQgcm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzW10gPSB7CisgICAgICAgIDEsIDIs
IDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAs
IDUwMDAKKyAgICB9OworICAgIGJvb2wgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gdHJ1ZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGNhbmRpZGF0ZSA6IHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
cykgeworICAgICAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCA9PSBjYW5kaWRhdGUpIHsKKyAg
ICAgICAgICAgIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9IGZhbHNlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGludmFsaWRSb3VuZGluZ0luY3JlbWVu
dCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5k
aW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAs
IDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3MpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEgJiYgbV9yb3VuZGlu
Z1R5cGUgIT0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyb3VuZGluZyB0eXBlIGlzIG5vdCBm
cmFjdGlvbi1kaWdpdHMgd2hpbGUgcm91bmRpbmdJbmNyZW1lbnQgaXMgc3BlY2lmaWVkIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJhaWxpbmdaZXJvRGlzcGxheSA9IGlu
dGxPcHRpb248VHJhaWxpbmdaZXJvRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50cmFpbGluZ1plcm9EaXNwbGF5LCB7IHsgImF1dG8iX3MsIFRyYWlsaW5n
WmVyb0Rpc3BsYXk6OkF1dG8gfSwgeyAic3RyaXBJZkludGVnZXIiX3MsIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OlN0cmlwSWZJbnRlZ2VyIH0gfSwgInRyYWlsaW5nWmVyb0Rpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJhdXRvXCIgb3IgXCJzdHJpcElmSW50ZWdlclwiIl9zLCBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IGludGxPcHRpb248Q29tcGFjdERpc3BsYXk+KGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5
IiksIHsgeyAic2hvcnQiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBD
b21wYWN0RGlzcGxheTo6TG9uZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
InNob3J0XCIgb3IgXCJsb25nXCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIFRyaVN0YXRlIHVzZUdyb3Vw
aW5nID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CisgICAgVXNlR3JvdXBpbmcgZGVmYXVs
dFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6OkF1dG87CisgICAgaWYgKG1fbm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBkZWZhdWx0VXNlR3JvdXBpbmcgPSBVc2VH
cm91cGluZzo6TWluMjsKKworICAgIG1fdXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFu
T3B0aW9uPFVzZUdyb3VwaW5nPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91
cGluZzo6RmFsc2UsIHsgeyAibWluMiJfcywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJf
cywgVXNlR3JvdXBpbmc6OkF1dG8gfSwgeyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlz
IH0gfSwgInVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwg
XCJhdXRvXCIsIG9yIFwiYWx3YXlzXCIiX3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CisKKyAgICBt
X3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRv
Il9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVy
IH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9z
LCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6
Ok5lZ2F0aXZlIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5l
dmVyXCIsIFwiYWx3YXlzXCIsIFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNp
Z25EaXNwbGF5OjpBdXRvKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAK
LSAgICBtX3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7
ICJhdXRvIl9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6
Ok5ldmVyIH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRa
ZXJvIl9zLCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9c
IiJfcywgU2lnbkRpc3BsYXk6OkF1dG8pOworICAgIG1fcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLCB7CisgICAgICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNl
aWwgfSwKKyAgICAgICAgICAgIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sCisg
ICAgICAgICAgICB7ICJleHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6RXhwYW5kIH0sCisgICAgICAg
ICAgICB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWwgfSwKKyAgICAgICAgICAgIHsgImhh
bGZGbG9vciJfcywgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3IgfSwKKyAgICAgICAgICAgIHsgImhh
bGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9LAorICAgICAgICAgICAgeyAi
aGFsZlRydW5jIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkV2ZW4iX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW4gfQorICAgICAgICB9LCAicm91bmRp
bmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwiZXhwYW5kXCIsIFwi
dHJ1bmNcIiwgXCJoYWxmQ2VpbFwiLCBcImhhbGZGbG9vclwiLCBcImhhbGZFeHBhbmRcIiwgXCJo
YWxmVHJ1bmNcIiwgb3IgXCJoYWxmRXZlblwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBDU3RyaW5n
IGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZGF0YUxvY2Fs
ZSwgIi11LW51LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CkBAIC0zMjksNyArMzY4LDQ4
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwot
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisg
ICAgc3dpdGNoIChtX3JvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWls
OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWNlaWxpbmci
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWZsb29yIik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCJyb3VuZGluZy1tb2RlLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkhhbGZDZWlsOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYt
Y2VpbGluZy4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9y
dCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21t
aXQvZThkZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWNlaWxpbmciKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVw
Iik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZGbG9vcjogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWwuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
Y29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAgICAg
aWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1mbG9vciIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
dXAiKTsgLy8gRGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmVHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJv
dW5kaW5nLW1vZGUtaGFsZi1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRp
bmctbW9kZS1oYWxmLWV2ZW4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc3dpdGNo
IChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTM5MSw2ICs0NzEsOSBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKIAorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICB9CisK
ICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czogewogICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KQEAgLTQxMCw4ICs0OTMsMzQgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyMnKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
Q29tcGFjdFJvdW5kaW5nOgotICAgICAgICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgz
NjQKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
aW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNp
c2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRp
bmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24uCisgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3Vp
ZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXplcm8tZGlzcGxh
eQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyB0cmFpbGluZyB6ZXJvIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNV
IGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNk
MzYKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtNDYyLDEwICs1NzEsMzQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXpl
TnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXpl
cm8iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6Cisg
ICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdu
b3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhl
MDZlY2M5OWJmZjQ0MmRkMzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1h
am9yVmVyc2lvbigpID49IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAg
ICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5l
Z2F0aXZlIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiIHNpZ24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlk
ZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2gg
KG1fdXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCIgZ3JvdXAtbWluMiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpB
dXRvOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KIAogICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tl
bGV0b24pOwpAQCAtNTI5LDYgKzY2Miw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAg
Y2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgog
ICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6
TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBk
b2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTksMTEgKzY5
MywyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJl
Y2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9l
cyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxp
bmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VT
RUQsIG1fdXNlR3JvdXBpbmcpOworCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAg
Y2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMg
Y2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9S
T1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTcyNywxMSAr
ODc3LDgxIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmlu
ZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRa
ZXJvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4g
Im5lZ2F0aXZlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAg
ICBzd2l0Y2ggKHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgor
ICAgICAgICByZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgor
ICAgICAgICByZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6
CisgICAgICAgIHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVu
YzoKKyAgICAgICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFs
ZkNlaWw6CisgICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZGbG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZU
cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVy
biAiaGFsZkV2ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFp
bGluZ1plcm9EaXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewor
ICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRv
Il9zOworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAg
ICAgIHJldHVybiAic3RyaXBJZkludGVnZXIiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5n
VHlwZSByb3VuZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAi
bW9yZVByZWNpc2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91
cGluZyB1c2VHcm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
YWx3YXlzIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICs5ODQs
MjMgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIo
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVj
aXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBp
bmcpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1c2VHcm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bm90YXRpb24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0
aW9uKSkpOwogICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0
cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwg
anNOdW1iZXIobV9yb3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkp
KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5n
UHJpb3JpdHksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyht
X3JvdW5kaW5nVHlwZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1
OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLjkzOTg1YThkMjhhNmNjOWRlMTYxZGIy
M2NhMzBjMDQyMWExODAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW50bEZpZWxkSXRl
cmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5z
aW9uS2V5IDogdWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhf
dCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07
CitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVt
IGNsYXNzIEludGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNp
b24sIExlc3NQcmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7
IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8
dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIElu
dGxOb3RhdGlvbik7CiAKQEAgLTEwNSw3ICsxMDYsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1h
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJl
bmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xh
c3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVu
dW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBl
bnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4
Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8s
IE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBU
cmFpbGluZ1plcm9EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07Cisg
ICAgZW51bSBjbGFzcyBVc2VHcm91cGluZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywg
QWx3YXlzIH07CisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwg
Rmxvb3IsIEV4cGFuZCwgVHJ1bmMsIEhhbGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhh
bGZUcnVuYywgSGFsZkV2ZW4gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJp
bmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5n
KEN1cnJlbmN5RGlzcGxheSk7CkBAIC0xMTMsNiArMTE3LDEwIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlz
cGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKElu
dGxSb3VuZGluZ1R5cGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0m
LCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2Jv
dW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKQEAgLTEzMyw2ICsx
NDEsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwogICAg
IHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fcm91bmRp
bmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07
CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OwogICAgIEN1cnJlbmN5U2ln
biBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsxNDksOSBAQCBjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIENvbXBhY3REaXNwbGF5
IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90
YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKLSAgICBi
b29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJhaWxpbmdaZXJvRGlzcGxheSBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH07CisgICAgVXNl
R3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5nOjpBbHdheXMgfTsKKyAgICBSb3Vu
ZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfTsKICAg
ICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDIzZDM4NjNkMTYwMDQzMWVm
NzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLmY0NGUxNzNhOGZlNzUzZjg4ZjgyZGUyZTk0NzMyOTZi
MzViMTVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcgKzYxLDY5IEBAIHZvaWQgc2V0TnVt
YmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxU
eXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMg
PSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0g
SW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHVuc2lnbmVkIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBJbnRsUm91bmRp
bmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQcmlv
cml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1By
aW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsgIm1v
cmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0sIHsg
Imxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uIH0g
fSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVByZWNp
c2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1
dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBpZiAo
IW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2ln
bmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAg
ICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAg
IHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
aWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAg
ICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwot
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0g
dW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmlt
dW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0
cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVj
aWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmlu
ZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3Bl
cnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZy
YWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWluaW11bVNpZ25pZmljYW50RGlnaXRz
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNV
bmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVk
KCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxS
b3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVlZEZkID0gKCFoYXNTZCAmJiBub3Rh
dGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50
bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAobmVlZFNkKSB7CisgICAgICAgIGlm
IChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
ID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50
bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyMTsKICAgICAgICAgfQotICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9u
RGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0g
bWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgeworICAgICAgICBpZiAoaGFzRmQpIHsK
KyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9N
QVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmlu
ZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwg
dm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVk
VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1
ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1pbihtaW5p
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAg
ICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQor
ICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWF4KG1heGltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAg
ICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMp
IHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1p
bmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
YXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAg
ICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGludGxJ
bnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7CisgICAgICAgIGlmIChyb3VuZGlu
Z1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uKQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5kaW5nUHJpb3JpdHkgPT0gSW50bFJv
dW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAgICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjsKKyAgICAg
ICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdU
eXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdU
eXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjsKKyAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7CisgICAgfQogfQogCiBjbGFzcyBJ
bnRsRmllbGRJdGVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFmNWE4NGMwMTk2ZThm
NDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgK
QEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KICAgICByZXR1cm4g
ZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+CitSZXN1bHRUeXBl
IGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVl
VmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbCBub3RG
b3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0
bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJUKHZhbHVlcy5zaXpl
KCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAg
ICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpZiAodmFs
dWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFsdWUudG9Cb29sZWFu
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICByZXR1cm4gZmFsc3lW
YWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsKKyAgICAgICAgICAg
IGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBub3RGb3VuZE1lc3Nh
Z2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsbGJhY2s7
Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihV
Q2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlhZTQ1NGQ2MmJmYzNk
MjhhMzVlNDg5Li42ZTk2YTA4MjgzNDFjMWQ3MGVkMGQ2NTU2MGRkZjJiMjkyNDc3Yjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAK
QEAgLTMyLDggKzMyLDI5IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJCisjdW5kZWYgVV9I
SURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4K
KyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5pY29k
ZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBVX0hJREVfRFJBRlRf
QVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVzRGVsZXRlcjo6b3Bl
cmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlmIChwbHVyYWxSdWxl
cykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQorCit2b2lkIFVOdW1i
ZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0dGVy
KiBmb3JtYXR0ZXIpCit7CisgICAgaWYgKGZvcm1hdHRlcikKKyAgICAgICAgdW51bXJmX2Nsb3Nl
KGZvcm1hdHRlcik7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxl
dGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTI4LDc0IEBAIHZvaWQg
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2Jh
bE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxl
ID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBt
X2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7
CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisK
KyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2Rv
Y3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdp
ZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJ
Q1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3
LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczov
L2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zv
cm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25p
ZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
ICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5
cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4v
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lv
bgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CisgICAg
U3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0ZWQg
PSBza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAgICBtX251bWJlckZv
cm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBJQ1VEZWxldGVyPHVu
dW1mX2Nsb3NlPj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdl
dCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUikKKyAgICBtX251bWJlclJhbmdlRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1i
ZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4odW51bXJmX29w
ZW5Gb3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2sodXBjb252ZXJ0ZWQu
Z2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVU5VTV9SQU5HRV9DT0xMQVBTRV9OT05FLCBV
TlVNX0lERU5USVRZX0ZBTExCQUNLX1JBTkdFLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAmc3Rh
dHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxl
cyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNlbHNlCisgICAgbV9udW1i
ZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERl
bGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGxvY2FsZS5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIFBsdXJhbFJ1bGVzIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDEzICsyMTIsMTMg
QEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3Jl
UHJlY2lzaW9uOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorI2VuZGlmCiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
Ci0gICAgbV9wbHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVy
YWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBlKG1fbG9jYWxlLnV0ZjgoKS5kYXRh
KCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBVUExV
UkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1
bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3Bl
bkZvclR5cGUobG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFM
X1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNTksOCArMjQ2LDEyIEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6
OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIGpz
TnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJl
cihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIo
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtMTg0LDcgKzI3NSwyMCBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGx1cmFsQ2F0
ZWdvcmllcyIpLCBjYXRlZ29yaWVzKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
b3B0aW9ucyk7CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3Mp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lz
aW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJv
dW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAibW9yZVByZWNpc2lvbiJfcykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246
CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRp
bmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsZXNzUHJlY2lzaW9uIl9zKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBvcHRpb25zOwogfQogCiAvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKQEAgLTE5OSwxMiArMzAzLDU3IEBA
IEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJvdGhlciJfcyk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBhdXRvIGZvcm1hdHRl
ZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVu
dW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICB1bnVt
Zl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
c2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwor
ICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19zZWxlY3RG
b3JtYXR0ZWQsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVm
ZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFs
dWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworI2Vsc2UK
ICAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdCg4KTsKICAgICBhdXRvIGxlbmd0aCA9IHVwbHJ1
bGVzX3NlbGVjdFdpdGhGb3JtYXQobV9wbHVyYWxSdWxlcy5nZXQoKSwgdmFsdWUsIG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOwog
CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVuZ3RoKSk7
CisjZW5kaWYKK30KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pT
VmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChz
dGFydCA+IGVuZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBy
YW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8
dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJf
cyk7CisKKyAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRl
ci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisK
KyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvclJhbmdlLCBtX3BsdXJhbFJ1bGVzLmdl
dCgpLCByYW5nZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3Ry
aW5nKGJ1ZmZlcikpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCA2ZDNhY2Fi
ODRlODE0ZTVmN2MwN2QwMjRmM2UyNWZmMmU1ZjBmNmU0Li45YzhkNDJjMDJhOWQzNGIwZTQ0MmNj
YzhkOTdhOGU4NzI0OGFmYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjgsMTEgKzI4LDI2IEBACiAKICNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+Ci0jaW5jbHVkZSA8dW5p
Y29kZS91cGx1cmFscnVsZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVy
cy5oPgogCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQor
I2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCitzdHJ1Y3QgVVBsdXJhbFJ1
bGVzOworc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlcjsKKwogbmFtZXNwYWNlIEpTQyB7CiAK
K3N0cnVjdCBVUGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKik7Cit9Oworc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1h
dHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXIqKTsKK307CisKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25L
ZXkgOiB1aW50OF90OwogCiBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CkBAIC02NCw2ICs3OSwxMCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNH
bG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0
KiwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIEludGxQbHVyYWxSdWxlcyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKQEAgLTczLDExICs5MiwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBi
b29sIHsgQ2FyZGluYWwsIE9yZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVwbHJ1bGVzX2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0
RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+
IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsK
KyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIHVuc2lnbmVkIG1fbWluaW11bUlu
dGVnZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEyMjIzZmQ1
MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRi
MTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBA
ZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVhcCkp
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBAQCBJbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0ds
b2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJm
b3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5w
cm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
anNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5w
cm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxS
dWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+
c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhi
MmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCBhY2M4MDRlZWJmYmJmZDI5ZjNjNjNjYWM0MzY2YTA2MGY2ZmNiNjIx
Li5lMzE5MjUxZDVjODRjZTM0NmQ3ZGNlM2ExYzM0MjA1NTA5ZjkzYjJiIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDIxLTEwLTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJGb3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMu
anM6CisKIDIwMjEtMTAtMjMgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICB1cGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1w
bHVyYWxydWxlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKaW5kZXgg
YTQzOGVhY2UxZDY2NDdhMDlkNDE2NTYyNjcxMjFjY2Q0ODUwNWUwNy4uZDMyNzczZTJhZTZmNzQ3
NTc4NGU3ZGFkMjIwNDc2MTc4YzJjMzdmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1wbHVyYWxydWxlcy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpz
CkBAIC0yOTQsMyArMjk0LDggQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBl
KSB7CiBzaG91bGRCZShuZXcgSW50bC5QbHVyYWxSdWxlcygnYXInKS5yZXNvbHZlZE9wdGlvbnMo
KS5wbHVyYWxDYXRlZ29yaWVzLmpvaW4oKSwgJ2ZldyxtYW55LG9uZSx0d28semVybyxvdGhlcicp
Owogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCku
cGx1cmFsQ2F0ZWdvcmllcy5qb2luKCksICdvbmUsb3RoZXInKTsKIHNob3VsZEJlKG5ldyBJbnRs
LlBsdXJhbFJ1bGVzKCdlbicsIHt0eXBlOiAnb3JkaW5hbCd9KS5yZXNvbHZlZE9wdGlvbnMoKS5w
bHVyYWxDYXRlZ29yaWVzLmpvaW4oKSwgJ2ZldyxvbmUsdHdvLG90aGVyJyk7CisKK2lmIChJbnRs
LlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSkgeworICAgIGNvbnN0IHBsID0gbmV3
IEludGwuUGx1cmFsUnVsZXMoInNsIik7CisgICAgc2hvdWxkQmUocGwuc2VsZWN0UmFuZ2UoMTAy
LCAyMDEpLCBgZmV3YCk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="466768"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442297</attachid>
            <date>2021-10-24 02:13:07 -0700</date>
            <delta_ts>2021-10-24 02:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024021306.patch</filename>
            <type>text/plain</type>
            <size>53296</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li43ZWQxMzJkODkyNzc3ZmNl
YTIwMzZhZWU1YWFhYTlkMGJjYjI4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1
cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VU51bWJlclJhbmdl
Rm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxS
dWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1
bGVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OnNlbGVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
UmFuZ2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmg6CisKIDIwMjEtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hh
dWRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBuaXRzIGZyb20gMjMyMDE5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNkZjNhNjE4NmY2M2Y4MzQ0MmRmMTdjZTI5MzQyMDQyODkz
ZjJiZGYuLjg0MDcyYTg4MzU4NGNiNzc0ZjdhOTFlNDIyOWJkZDIzZWFjOGNjNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ1LDYgKzE4NDUsNyBAQAogCQlFMzA3MTc4QzI0
Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8q
IEludGxMb2NhbGVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0
IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzA3MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExv
Y2FsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNB
RkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcy
NzI1NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyog
SW50bFBsdXJhbFJ1bGVzLmNwcCAqLzsgfTsKIAkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMEU4QTRFMjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmggKi87IH07CiAJCUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBU
ZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzBFOEE1MDI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICov
OyB9OwogCQlFMzBFOEE1NzI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzBFOEE1MTI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgg
Ki87IH07CkBAIC0xMTgzNCw2ICsxMTgzNSw3IEBACiAJCQkJNUM0MTk2NjIyMjcwRTAwMDAwNDdC
N0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNjY0NDFFMjU0NDA5QjMwMDAxODc2RiAvKiBJ
bnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzA4NzNFNzI3MjU1OTQxMDA1
M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU4NTQz
MjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMGUyM2Ey
ZjM2YzEyNWU5NjdmMGVmYTVjNGQ5Yjk4ZGE4OGNlYzEzLi5jMjIxNjc0YmM2YzMwOTViNjY5MmEy
MDMzNTllOGY1M2MxY2RhODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04NDAs
NyArODQwLDcgQEAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAogcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxPYmplY3QuY3BwCi1ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAKK3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBAbm8tdW5pZnkgLy8gQ29uZmluZSBVX0hJ
REVfRFJBRlRfQVBJJ3MgZWZmZWN0IHRvIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc4MjhkMDA4YTg1MzQ2
MWU0OGUzNmQyZmJlYTYxYzcwOTU3NmRkYWYuLjRjZWQ1MjU3MGNkOTVlNDY1NDBiZGMwODU2N2U4
MGI5YjdjOTExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjE3LDEwICsyMTcsMTIgQEAKICAgICBtYWNybyhyZXNvbHZl
KSBcCiAgICAgbWFjcm8ocm91bmRpbmdJbmNyZW1lbnQpIFwKICAgICBtYWNybyhyb3VuZGluZ01v
ZGUpIFwKKyAgICBtYWNybyhyb3VuZGluZ1ByaW9yaXR5KSBcCiAgICAgbWFjcm8oc2NyaXB0KSBc
CiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8oc2Vjb25kcykgXAogICAgIG1hY3JvKHNl
Z21lbnQpIFwKKyAgICBtYWNybyhzZWxlY3RSYW5nZSkgXAogICAgIG1hY3JvKHNlbnNpdGl2aXR5
KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApAQCAtMjQ5LDYgKzI1MSw3
IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikg
XAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFjcm8odHJhaWxpbmdaZXJvRGlzcGxheSkg
XAogICAgIG1hY3JvKHR5cGUpIFwKICAgICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2Rl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IGZjMzIzNzAzMjAyMmI0YzZkNjdkZDgxNTU5ZWMzMzViNTZiZDBkZmYuLmNh
YzI5NzhjYzJkN2IzMDlhYWFjMGZhOTFkZmI0YmEwNmQ0NDE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMDksMTQg
KzMwOSw1MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKKyAgICBtX3JvdW5kaW5n
SW5jcmVtZW50ID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCAxLCA1MDAwLCAxKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
dW5zaWduZWQgcm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzW10gPSB7CisgICAgICAgIDEsIDIs
IDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAs
IDUwMDAKKyAgICB9OworICAgIGJvb2wgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gdHJ1ZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGNhbmRpZGF0ZSA6IHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
cykgeworICAgICAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCA9PSBjYW5kaWRhdGUpIHsKKyAg
ICAgICAgICAgIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9IGZhbHNlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGludmFsaWRSb3VuZGluZ0luY3JlbWVu
dCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5k
aW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAs
IDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3MpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEgJiYgbV9yb3VuZGlu
Z1R5cGUgIT0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyb3VuZGluZyB0eXBlIGlzIG5vdCBm
cmFjdGlvbi1kaWdpdHMgd2hpbGUgcm91bmRpbmdJbmNyZW1lbnQgaXMgc3BlY2lmaWVkIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJhaWxpbmdaZXJvRGlzcGxheSA9IGlu
dGxPcHRpb248VHJhaWxpbmdaZXJvRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50cmFpbGluZ1plcm9EaXNwbGF5LCB7IHsgImF1dG8iX3MsIFRyYWlsaW5n
WmVyb0Rpc3BsYXk6OkF1dG8gfSwgeyAic3RyaXBJZkludGVnZXIiX3MsIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OlN0cmlwSWZJbnRlZ2VyIH0gfSwgInRyYWlsaW5nWmVyb0Rpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJhdXRvXCIgb3IgXCJzdHJpcElmSW50ZWdlclwiIl9zLCBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IGludGxPcHRpb248Q29tcGFjdERpc3BsYXk+KGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5
IiksIHsgeyAic2hvcnQiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBD
b21wYWN0RGlzcGxheTo6TG9uZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
InNob3J0XCIgb3IgXCJsb25nXCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIFRyaVN0YXRlIHVzZUdyb3Vw
aW5nID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CisgICAgVXNlR3JvdXBpbmcgZGVmYXVs
dFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6OkF1dG87CisgICAgaWYgKG1fbm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBkZWZhdWx0VXNlR3JvdXBpbmcgPSBVc2VH
cm91cGluZzo6TWluMjsKKworICAgIG1fdXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFu
T3B0aW9uPFVzZUdyb3VwaW5nPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91
cGluZzo6RmFsc2UsIHsgeyAibWluMiJfcywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJf
cywgVXNlR3JvdXBpbmc6OkF1dG8gfSwgeyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlz
IH0gfSwgInVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwg
XCJhdXRvXCIsIG9yIFwiYWx3YXlzXCIiX3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CisKKyAgICBt
X3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRv
Il9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVy
IH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9z
LCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6
Ok5lZ2F0aXZlIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5l
dmVyXCIsIFwiYWx3YXlzXCIsIFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNp
Z25EaXNwbGF5OjpBdXRvKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAK
LSAgICBtX3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7
ICJhdXRvIl9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6
Ok5ldmVyIH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRa
ZXJvIl9zLCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9c
IiJfcywgU2lnbkRpc3BsYXk6OkF1dG8pOworICAgIG1fcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLCB7CisgICAgICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNl
aWwgfSwKKyAgICAgICAgICAgIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sCisg
ICAgICAgICAgICB7ICJleHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6RXhwYW5kIH0sCisgICAgICAg
ICAgICB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWwgfSwKKyAgICAgICAgICAgIHsgImhh
bGZGbG9vciJfcywgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3IgfSwKKyAgICAgICAgICAgIHsgImhh
bGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9LAorICAgICAgICAgICAgeyAi
aGFsZlRydW5jIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkV2ZW4iX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW4gfQorICAgICAgICB9LCAicm91bmRp
bmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwiZXhwYW5kXCIsIFwi
dHJ1bmNcIiwgXCJoYWxmQ2VpbFwiLCBcImhhbGZGbG9vclwiLCBcImhhbGZFeHBhbmRcIiwgXCJo
YWxmVHJ1bmNcIiwgb3IgXCJoYWxmRXZlblwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBDU3RyaW5n
IGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZGF0YUxvY2Fs
ZSwgIi11LW51LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CkBAIC0zMjksNyArMzY4LDQ4
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwot
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisg
ICAgc3dpdGNoIChtX3JvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWls
OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWNlaWxpbmci
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWZsb29yIik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCJyb3VuZGluZy1tb2RlLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkhhbGZDZWlsOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYt
Y2VpbGluZy4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9y
dCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21t
aXQvZThkZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWNlaWxpbmciKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVw
Iik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZGbG9vcjogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWwuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
Y29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAgICAg
aWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1mbG9vciIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
dXAiKTsgLy8gRGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmVHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJv
dW5kaW5nLW1vZGUtaGFsZi1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRp
bmctbW9kZS1oYWxmLWV2ZW4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc3dpdGNo
IChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTM5MSw2ICs0NzEsOSBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKIAorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICB9CisK
ICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czogewogICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KQEAgLTQxMCw4ICs0OTMsMzQgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyMnKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
Q29tcGFjdFJvdW5kaW5nOgotICAgICAgICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgz
NjQKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
aW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNp
c2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRp
bmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24uCisgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3Vp
ZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXplcm8tZGlzcGxh
eQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyB0cmFpbGluZyB6ZXJvIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNV
IGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNk
MzYKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtNDYyLDEwICs1NzEsMzQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXpl
TnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXpl
cm8iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6Cisg
ICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdu
b3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhl
MDZlY2M5OWJmZjQ0MmRkMzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1h
am9yVmVyc2lvbigpID49IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAg
ICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5l
Z2F0aXZlIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiIHNpZ24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlk
ZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2gg
KG1fdXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCIgZ3JvdXAtbWluMiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpB
dXRvOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KIAogICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tl
bGV0b24pOwpAQCAtNTI5LDYgKzY2Miw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAg
Y2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgog
ICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6
TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBk
b2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTksMTEgKzY5
MywyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJl
Y2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9l
cyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxp
bmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VT
RUQsIG1fdXNlR3JvdXBpbmcpOworCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAg
Y2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMg
Y2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9S
T1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTcyNywxMSAr
ODc3LDgxIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmlu
ZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRa
ZXJvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4g
Im5lZ2F0aXZlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAg
ICBzd2l0Y2ggKHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgor
ICAgICAgICByZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgor
ICAgICAgICByZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6
CisgICAgICAgIHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVu
YzoKKyAgICAgICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFs
ZkNlaWw6CisgICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZGbG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZU
cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVy
biAiaGFsZkV2ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFp
bGluZ1plcm9EaXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewor
ICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRv
Il9zOworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAg
ICAgIHJldHVybiAic3RyaXBJZkludGVnZXIiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5n
VHlwZSByb3VuZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAi
bW9yZVByZWNpc2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91
cGluZyB1c2VHcm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
YWx3YXlzIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICs5ODQs
MjMgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIo
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVj
aXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBp
bmcpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1c2VHcm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bm90YXRpb24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0
aW9uKSkpOwogICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0
cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwg
anNOdW1iZXIobV9yb3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkp
KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5n
UHJpb3JpdHksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyht
X3JvdW5kaW5nVHlwZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1
OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLjkzOTg1YThkMjhhNmNjOWRlMTYxZGIy
M2NhMzBjMDQyMWExODAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW50bEZpZWxkSXRl
cmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5z
aW9uS2V5IDogdWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhf
dCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07
CitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVt
IGNsYXNzIEludGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNp
b24sIExlc3NQcmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7
IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8
dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIElu
dGxOb3RhdGlvbik7CiAKQEAgLTEwNSw3ICsxMDYsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1h
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJl
bmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xh
c3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVu
dW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBl
bnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4
Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8s
IE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBU
cmFpbGluZ1plcm9EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07Cisg
ICAgZW51bSBjbGFzcyBVc2VHcm91cGluZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywg
QWx3YXlzIH07CisgICAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwg
Rmxvb3IsIEV4cGFuZCwgVHJ1bmMsIEhhbGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhh
bGZUcnVuYywgSGFsZkV2ZW4gfTsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJp
bmcoU3R5bGUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5n
KEN1cnJlbmN5RGlzcGxheSk7CkBAIC0xMTMsNiArMTE3LDEwIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlz
cGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKElu
dGxSb3VuZGluZ1R5cGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0m
LCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2Jv
dW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKQEAgLTEzMyw2ICsx
NDEsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsgMyB9OwogICAg
IHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fcm91bmRp
bmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07
CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OwogICAgIEN1cnJlbmN5U2ln
biBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsxNDksOSBAQCBjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIENvbXBhY3REaXNwbGF5
IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24geyBJbnRsTm90
YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxheTsKLSAgICBi
b29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJhaWxpbmdaZXJvRGlzcGxheSBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH07CisgICAgVXNl
R3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5nOjpBbHdheXMgfTsKKyAgICBSb3Vu
ZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfTsKICAg
ICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDIzZDM4NjNkMTYwMDQzMWVm
NzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLmY0NGUxNzNhOGZlNzUzZjg4ZjgyZGUyZTk0NzMyOTZi
MzViMTVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcgKzYxLDY5IEBAIHZvaWQgc2V0TnVt
YmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxU
eXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVnZXJEaWdpdHMg
PSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICghbWluaW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0g
SW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHVuc2lnbmVkIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBJbnRsUm91bmRp
bmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQcmlv
cml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1By
aW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsgIm1v
cmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0sIHsg
Imxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uIH0g
fSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVByZWNp
c2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1
dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBpZiAo
IW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2ln
bmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAg
ICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51
bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAg
IHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
aWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAg
ICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwot
ICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0g
dW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmlt
dW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0
cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVj
aWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmlu
ZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3Bl
cnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZy
YWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWluaW11bVNpZ25pZmljYW50RGlnaXRz
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNV
bmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVk
KCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxS
b3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVlZEZkID0gKCFoYXNTZCAmJiBub3Rh
dGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50
bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAobmVlZFNkKSB7CisgICAgICAgIGlm
IChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
ID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50
bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyMTsKICAgICAgICAgfQotICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9u
RGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0g
bWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgeworICAgICAgICBpZiAoaGFzRmQpIHsK
KyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9N
QVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmlu
ZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1
bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwg
dm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVk
VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1
ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1pbihtaW5p
bXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAg
ICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQor
ICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWF4KG1heGltdW1G
cmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAg
ICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMp
IHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1p
bmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
YXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAg
ICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OwotICAgIGludGxJ
bnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7CisgICAgICAgIGlmIChyb3VuZGlu
Z1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uKQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5kaW5nUHJpb3JpdHkgPT0gSW50bFJv
dW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAgICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjsKKyAgICAg
ICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdU
eXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdU
eXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjsKKyAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7CisgICAgfQogfQogCiBjbGFzcyBJ
bnRsRmllbGRJdGVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFmNWE4NGMwMTk2ZThm
NDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgK
QEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KICAgICByZXR1cm4g
ZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+CitSZXN1bHRUeXBl
IGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVl
VmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbCBub3RG
b3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0
bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJUKHZhbHVlcy5zaXpl
KCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAg
ICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBvcHRpb25zLT5nZXQo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBpZiAodmFs
dWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFsdWUudG9Cb29sZWFu
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICByZXR1cm4gZmFsc3lW
YWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsKKyAgICAgICAgICAg
IGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBub3RGb3VuZE1lc3Nh
Z2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsbGJhY2s7
Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihV
Q2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlhZTQ1NGQ2MmJmYzNk
MjhhMzVlNDg5Li5iZDVjYTIyYzIzNzI2OTQxZDgzNDJhMjRhNDE0NzlkNzVlZWI2MzBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAK
QEAgLTMyLDggKzMyLDMxIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJCisjdW5kZWYgVV9I
SURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4K
KyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5pY29k
ZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBVX0hJREVfRFJBRlRf
QVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVzRGVsZXRlcjo6b3Bl
cmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlmIChwbHVyYWxSdWxl
cykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQorCisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJE
ZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciogZm9ybWF0dGVyKQorewor
ICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShmb3JtYXR0ZXIpOworfQor
I2VuZGlmCisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9i
amVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNV
RGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTMwLDc0IEBAIHZvaWQgSW50bFBsdXJh
bFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwg
dGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxlID0gbV9sb2Nh
bGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1f
bnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3Jt
YXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51
dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJQ1U6Om1ham9y
VmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhl
IHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9t
aW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7CisgICAgICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRp
Z2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7
ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQ
cmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
Y29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3Jl
UHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgU3Ry
aW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nVmll
dyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0ZWQgPSBza2VsZXRv
blZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAgICBtX251bWJlckZvcm1hdHRlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
Pj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2Vs
ZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAg
ICBtX251bWJlclJhbmdlRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZv
cm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4odW51bXJmX29wZW5Gb3JTa2Vs
ZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2sodXBjb252ZXJ0ZWQuZ2V0KCksIHNr
ZWxldG9uVmlldy5sZW5ndGgoKSwgVU5VTV9SQU5HRV9DT0xMQVBTRV9OT05FLCBVTlVNX0lERU5U
SVRZX0ZBTExCQUNLX1JBTkdFLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNlbHNlCisgICAgbV9udW1iZXJGb3JtYXQg
PSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVu
dW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIs
ICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJh
bFJ1bGVzIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDEzICsyMTQsMTMgQEAgdm9pZCBJ
bnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQo
KSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0
cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKICAgICAgICAgYnJl
YWs7CiAgICAgfQorI2VuZGlmCiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9w
bHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0Rl
bGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBlKG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG1fdHlw
ZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVf
Q0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRy
PFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUo
bG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JE
SU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47
CkBAIC0xNTksOCArMjQ4LDEyIEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERp
Z2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1f
bWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTg0LDcg
KzI3NywyMCBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGx1cmFsQ2F0ZWdvcmllcyIp
LCBjYXRlZ29yaWVzKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7
CisgICAgc3dpdGNoIChtX3JvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2Fu
dERpZ2l0czoKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9k
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAibW9yZVByZWNpc2lvbiJfcykpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJsZXNzUHJlY2lzaW9uIl9zKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBvcHRpb25zOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKQEAgLTE5OSwxMiArMzA1LDU3IEBAIEpTVmFsdWUg
SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91
YmxlIHZhbHVlKSBjb25zCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJv
dGhlciJfcyk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICB1bnVtZl9mb3JtYXRE
b3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0
KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBs
dXJhbCB2YWx1ZSJfcyk7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19zZWxlY3RGb3JtYXR0ZWQs
IG1fcGx1cmFsUnVsZXMuZ2V0KCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOwor
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworI2Vsc2UKICAgICBWZWN0
b3I8VUNoYXIsIDg+IHJlc3VsdCg4KTsKICAgICBhdXRvIGxlbmd0aCA9IHVwbHJ1bGVzX3NlbGVj
dFdpdGhGb3JtYXQobV9wbHVyYWxSdWxlcy5nZXQoKSwgdmFsdWUsIG1fbnVtYmVyRm9ybWF0Lmdl
dCgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOwogCiAgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVuZ3RoKSk7CisjZW5kaWYK
K30KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTVmFsdWUgSW50
bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbnVtYmVyUmFu
Z2VGb3JtYXR0ZXIpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChzdGFydCA+IGVu
ZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0
IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0
ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Ns
b3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisKKyAg
ICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwg
c3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfcyk7CisKKyAgICBWZWN0
b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvclJhbmdlLCBtX3BsdXJhbFJ1bGVzLmdldCgpLCByYW5n
ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVj
dCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZl
cikpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCA2ZDNhY2FiODRlODE0ZTVm
N2MwN2QwMjRmM2UyNWZmMmU1ZjBmNmU0Li41Zjk2NDAxOTk5MzEzNjJlZTU5MGYxMWFkNTdmNjZk
NjRlODhkNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuaApAQCAtMjgsMTEgKzI4LDI4IEBACiAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91cGx1
cmFscnVsZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisj
aWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2lmIFVfSUNV
X1ZFUlNJT05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzOworc3Ry
dWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlcjsKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBV
UGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9y
KCkoVVBsdXJhbFJ1bGVzKik7Cit9OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9Owor
I2VuZGlmCisKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90OwogCiBj
bGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkBA
IC02NCw2ICs4MSwxMCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3Vi
bGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikK
KyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxl
cyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTcz
LDExICs5NCwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgQ2FyZGluYWwsIE9y
ZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVw
bHJ1bGVzX2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0
ZXI8dW51bV9jbG9zZT47CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1
cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8
dW51bWZfY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVt
YmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VG
b3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3Jt
YXR0ZXI7CisjZW5kaWYKKyNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNlbmRpZgogCiAgICAgU3Ry
aW5nIG1fbG9jYWxlOwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4
YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVG
dW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5j
U2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihp
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAs
MTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOworI2Vu
ZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+
c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJh
bHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFu
Z2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRs
UGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVy
YWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFu
Z2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworCisgICAg
ZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUg
ZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFs
T2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3
OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3
NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xh
c3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVj
dHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBh
Y2M4MDRlZWJmYmJmZDI5ZjNjNjNjYWM0MzY2YTA2MGY2ZmNiNjIxLi5lMzE5MjUxZDVjODRjZTM0
NmQ3ZGNlM2ExYzM0MjA1NTA5ZjkzYjJiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEwLTI0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50
IEludGxOdW1iZXJGb3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanM6CisKIDIwMjEtMTAtMjMg
IFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICB1cGRhdGUgdGVz
dDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKaW5kZXggYTQzOGVhY2UxZDY2NDdhMDlk
NDE2NTYyNjcxMjFjY2Q0ODUwNWUwNy4uZDMyNzczZTJhZTZmNzQ3NTc4NGU3ZGFkMjIwNDc2MTc4
YzJjMzdmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCkBAIC0yOTQsMyArMjk0LDgg
QEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiBzaG91bGRCZShuZXcg
SW50bC5QbHVyYWxSdWxlcygnYXInKS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVz
LmpvaW4oKSwgJ2ZldyxtYW55LG9uZSx0d28semVybyxvdGhlcicpOwogc2hvdWxkQmUobmV3IElu
dGwuUGx1cmFsUnVsZXMoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5q
b2luKCksICdvbmUsb3RoZXInKTsKIHNob3VsZEJlKG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCdlbics
IHt0eXBlOiAnb3JkaW5hbCd9KS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmpv
aW4oKSwgJ2ZldyxvbmUsdHdvLG90aGVyJyk7CisKK2lmIChJbnRsLlBsdXJhbFJ1bGVzLnByb3Rv
dHlwZS5zZWxlY3RSYW5nZSkgeworICAgIGNvbnN0IHBsID0gbmV3IEludGwuUGx1cmFsUnVsZXMo
InNsIik7CisgICAgc2hvdWxkQmUocGwuc2VsZWN0UmFuZ2UoMTAyLCAyMDEpLCBgZmV3YCk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442298</attachid>
            <date>2021-10-24 02:17:14 -0700</date>
            <delta_ts>2021-10-24 02:56:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024021713.patch</filename>
            <type>text/plain</type>
            <size>53140</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li43ZWQxMzJkODkyNzc3ZmNl
YTIwMzZhZWU1YWFhYTlkMGJjYjI4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1
cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VU51bWJlclJhbmdl
Rm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxS
dWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1
bGVzOjpyZXNvbHZlZE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OnNlbGVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
UmFuZ2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmg6CisKIDIwMjEtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hh
dWRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBuaXRzIGZyb20gMjMyMDE5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNkZjNhNjE4NmY2M2Y4MzQ0MmRmMTdjZTI5MzQyMDQyODkz
ZjJiZGYuLjg0MDcyYTg4MzU4NGNiNzc0ZjdhOTFlNDIyOWJkZDIzZWFjOGNjNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ1LDYgKzE4NDUsNyBAQAogCQlFMzA3MTc4QzI0
Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8q
IEludGxMb2NhbGVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0
IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzA3MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExv
Y2FsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNB
RkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcy
NzI1NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyog
SW50bFBsdXJhbFJ1bGVzLmNwcCAqLzsgfTsKIAkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMEU4QTRFMjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmggKi87IH07CiAJCUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBU
ZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzBFOEE1MDI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICov
OyB9OwogCQlFMzBFOEE1NzI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzBFOEE1MTI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgg
Ki87IH07CkBAIC0xMTgzNCw2ICsxMTgzNSw3IEBACiAJCQkJNUM0MTk2NjIyMjcwRTAwMDAwNDdC
N0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNjY0NDFFMjU0NDA5QjMwMDAxODc2RiAvKiBJ
bnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzA4NzNFNzI3MjU1OTQxMDA1
M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU4NTQz
MjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMGUyM2Ey
ZjM2YzEyNWU5NjdmMGVmYTVjNGQ5Yjk4ZGE4OGNlYzEzLi5jMjIxNjc0YmM2YzMwOTViNjY5MmEy
MDMzNTllOGY1M2MxY2RhODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04NDAs
NyArODQwLDcgQEAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAogcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxPYmplY3QuY3BwCi1ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAKK3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBAbm8tdW5pZnkgLy8gQ29uZmluZSBVX0hJ
REVfRFJBRlRfQVBJJ3MgZWZmZWN0IHRvIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc4MjhkMDA4YTg1MzQ2
MWU0OGUzNmQyZmJlYTYxYzcwOTU3NmRkYWYuLjRjZWQ1MjU3MGNkOTVlNDY1NDBiZGMwODU2N2U4
MGI5YjdjOTExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjE3LDEwICsyMTcsMTIgQEAKICAgICBtYWNybyhyZXNvbHZl
KSBcCiAgICAgbWFjcm8ocm91bmRpbmdJbmNyZW1lbnQpIFwKICAgICBtYWNybyhyb3VuZGluZ01v
ZGUpIFwKKyAgICBtYWNybyhyb3VuZGluZ1ByaW9yaXR5KSBcCiAgICAgbWFjcm8oc2NyaXB0KSBc
CiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8oc2Vjb25kcykgXAogICAgIG1hY3JvKHNl
Z21lbnQpIFwKKyAgICBtYWNybyhzZWxlY3RSYW5nZSkgXAogICAgIG1hY3JvKHNlbnNpdGl2aXR5
KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApAQCAtMjQ5LDYgKzI1MSw3
IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikg
XAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFjcm8odHJhaWxpbmdaZXJvRGlzcGxheSkg
XAogICAgIG1hY3JvKHR5cGUpIFwKICAgICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2Rl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IGZjMzIzNzAzMjAyMmI0YzZkNjdkZDgxNTU5ZWMzMzViNTZiZDBkZmYuLmNh
YzI5NzhjYzJkN2IzMDlhYWFjMGZhOTFkZmI0YmEwNmQ0NDE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zMDksMTQg
KzMwOSw1MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIHNldE51bWJlckZvcm1hdERp
Z2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKKyAgICBtX3JvdW5kaW5n
SW5jcmVtZW50ID0gaW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCAxLCA1MDAwLCAxKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
dW5zaWduZWQgcm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzW10gPSB7CisgICAgICAgIDEsIDIs
IDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAs
IDUwMDAKKyAgICB9OworICAgIGJvb2wgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gdHJ1ZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGNhbmRpZGF0ZSA6IHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
cykgeworICAgICAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCA9PSBjYW5kaWRhdGUpIHsKKyAg
ICAgICAgICAgIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9IGZhbHNlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGludmFsaWRSb3VuZGluZ0luY3JlbWVu
dCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5k
aW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAs
IDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3MpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEgJiYgbV9yb3VuZGlu
Z1R5cGUgIT0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyb3VuZGluZyB0eXBlIGlzIG5vdCBm
cmFjdGlvbi1kaWdpdHMgd2hpbGUgcm91bmRpbmdJbmNyZW1lbnQgaXMgc3BlY2lmaWVkIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJhaWxpbmdaZXJvRGlzcGxheSA9IGlu
dGxPcHRpb248VHJhaWxpbmdaZXJvRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50cmFpbGluZ1plcm9EaXNwbGF5LCB7IHsgImF1dG8iX3MsIFRyYWlsaW5n
WmVyb0Rpc3BsYXk6OkF1dG8gfSwgeyAic3RyaXBJZkludGVnZXIiX3MsIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OlN0cmlwSWZJbnRlZ2VyIH0gfSwgInRyYWlsaW5nWmVyb0Rpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJhdXRvXCIgb3IgXCJzdHJpcElmSW50ZWdlclwiIl9zLCBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAg
ICAgbV9jb21wYWN0RGlzcGxheSA9IGludGxPcHRpb248Q29tcGFjdERpc3BsYXk+KGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5
IiksIHsgeyAic2hvcnQiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBD
b21wYWN0RGlzcGxheTo6TG9uZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
InNob3J0XCIgb3IgXCJsb25nXCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIFRyaVN0YXRlIHVzZUdyb3Vw
aW5nID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CisgICAgVXNlR3JvdXBpbmcgZGVmYXVs
dFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6OkF1dG87CisgICAgaWYgKG1fbm90YXRpb24gPT0g
SW50bE5vdGF0aW9uOjpDb21wYWN0KQorICAgICAgICBkZWZhdWx0VXNlR3JvdXBpbmcgPSBVc2VH
cm91cGluZzo6TWluMjsKKworICAgIG1fdXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFu
T3B0aW9uPFVzZUdyb3VwaW5nPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91
cGluZzo6RmFsc2UsIHsgeyAibWluMiJfcywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJf
cywgVXNlR3JvdXBpbmc6OkF1dG8gfSwgeyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlz
IH0gfSwgInVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwg
XCJhdXRvXCIsIG9yIFwiYWx3YXlzXCIiX3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CisKKyAgICBt
X3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRv
Il9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVy
IH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9z
LCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6
Ok5lZ2F0aXZlIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5l
dmVyXCIsIFwiYWx3YXlzXCIsIFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNp
Z25EaXNwbGF5OjpBdXRvKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAK
LSAgICBtX3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7
ICJhdXRvIl9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6
Ok5ldmVyIH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRa
ZXJvIl9zLCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9c
IiJfcywgU2lnbkRpc3BsYXk6OkF1dG8pOworICAgIG1fcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLCB7CisgICAgICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNl
aWwgfSwKKyAgICAgICAgICAgIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sCisg
ICAgICAgICAgICB7ICJleHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6RXhwYW5kIH0sCisgICAgICAg
ICAgICB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWwgfSwKKyAgICAgICAgICAgIHsgImhh
bGZGbG9vciJfcywgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3IgfSwKKyAgICAgICAgICAgIHsgImhh
bGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9LAorICAgICAgICAgICAgeyAi
aGFsZlRydW5jIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYyB9LAorICAgICAgICAgICAgeyAi
aGFsZkV2ZW4iX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW4gfQorICAgICAgICB9LCAicm91bmRp
bmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwiZXhwYW5kXCIsIFwi
dHJ1bmNcIiwgXCJoYWxmQ2VpbFwiLCBcImhhbGZGbG9vclwiLCBcImhhbGZFeHBhbmRcIiwgXCJo
YWxmVHJ1bmNcIiwgb3IgXCJoYWxmRXZlblwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBDU3RyaW5n
IGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZGF0YUxvY2Fs
ZSwgIi11LW51LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CkBAIC0zMjksNyArMzY4LDQ4
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwot
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisg
ICAgc3dpdGNoIChtX3JvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWls
OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWNlaWxpbmci
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWZsb29yIik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCJyb3VuZGluZy1tb2RlLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkhhbGZDZWlsOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYt
Y2VpbGluZy4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9y
dCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21t
aXQvZThkZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWNlaWxpbmciKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVw
Iik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZGbG9vcjogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWwuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
Y29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAgICAg
aWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1mbG9vciIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
dXAiKTsgLy8gRGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmVHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJv
dW5kaW5nLW1vZGUtaGFsZi1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRp
bmctbW9kZS1oYWxmLWV2ZW4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc3dpdGNo
IChtX3N0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTM5MSw2ICs0NzEsOSBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKIAorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICB9CisK
ICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czogewogICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KQEAgLTQxMCw4ICs0OTMsMzQgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyMnKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
Q29tcGFjdFJvdW5kaW5nOgotICAgICAgICAvLyBEbyBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgz
NjQKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
aW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNp
c2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRp
bmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24uCisgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3Vp
ZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXplcm8tZGlzcGxh
eQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyB0cmFpbGluZyB6ZXJvIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNV
IGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNk
MzYKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtNDYyLDEwICs1NzEsMzQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXpl
TnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXpl
cm8iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6Cisg
ICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdu
b3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhl
MDZlY2M5OWJmZjQ0MmRkMzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1h
am9yVmVyc2lvbigpID49IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAg
ICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5l
Z2F0aXZlIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiIHNpZ24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlk
ZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2gg
KG1fdXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCIgZ3JvdXAtbWluMiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpB
dXRvOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KIAogICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tl
bGV0b24pOwpAQCAtNTI5LDYgKzY2Miw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlh
bGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAg
Y2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgog
ICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6
TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBk
b2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTksMTEgKzY5
MywyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJl
Y2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9l
cyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxp
bmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VT
RUQsIG1fdXNlR3JvdXBpbmcpOworCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAg
Y2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVt
YmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMg
Y2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9S
T1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTcyNywxMSAr
ODc3LDgxIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmlu
ZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRa
ZXJvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4g
Im5lZ2F0aXZlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9y
bWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAg
ICBzd2l0Y2ggKHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgor
ICAgICAgICByZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgor
ICAgICAgICByZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6
CisgICAgICAgIHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVu
YzoKKyAgICAgICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFs
ZkNlaWw6CisgICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZGbG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZU
cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVy
biAiaGFsZkV2ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFp
bGluZ1plcm9EaXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewor
ICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRv
Il9zOworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAg
ICAgIHJldHVybiAic3RyaXBJZkludGVnZXIiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5n
VHlwZSByb3VuZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAi
bW9yZVByZWNpc2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91
cGluZyB1c2VHcm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
YWx3YXlzIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICs5ODQs
MjMgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIo
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVj
aXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7Cisg
ICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBp
bmcpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1c2VHcm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7
CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bm90YXRpb24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0
aW9uKSkpOwogICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAg
ICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y29tcGFjdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0
cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwg
anNOdW1iZXIobV9yb3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkp
KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5n
UHJpb3JpdHksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyht
X3JvdW5kaW5nVHlwZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1
OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLmI0YWNmZmRmOWNkMjZlMDNjMWE0Njkx
YjA0MTgzYzZmOTdmMDZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW50bEZpZWxkSXRl
cmF0b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5z
aW9uS2V5IDogdWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhf
dCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07
CitlbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVt
IGNsYXNzIEludGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNp
b24sIExlc3NQcmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7
IFN0YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8
dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIElu
dGxOb3RhdGlvbik7CiAKQEAgLTk0LDYgKzk1LDggQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBJbnRsTnVtYmVy
Rm9ybWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAorICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91
bmRpbmdUeXBlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0
dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtMTA1LDcgKzEwOCwxMCBA
QCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIGVudW0gY2xhc3MgQ3VycmVuY3lTaWduIDogdWludDhfdCB7IFN0YW5kYXJkLCBBY2Nv
dW50aW5nIH07CiAgICAgZW51bSBjbGFzcyBVbml0RGlzcGxheSA6IHVpbnQ4X3QgeyBTaG9ydCwg
TmFycm93LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBDb21wYWN0RGlzcGxheSA6IHVpbnQ4X3Qg
eyBTaG9ydCwgTG9uZyB9OwotICAgIGVudW0gY2xhc3MgU2lnbkRpc3BsYXkgOiB1aW50OF90IHsg
QXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybyB9OworICAgIGVudW0gY2xhc3MgU2lnbkRp
c3BsYXkgOiB1aW50OF90IHsgQXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybywgTmVnYXRp
dmUgfTsKKyAgICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90IHsgQXV0
bywgU3RyaXBJZkludGVnZXIgfTsKKyAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDogdWludDhf
dCB7IEZhbHNlLCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKKyAgICBlbnVtIGNsYXNzIFJvdW5kaW5n
TW9kZSA6IHVpbnQ4X3QgeyBDZWlsLCBGbG9vciwgRXhwYW5kLCBUcnVuYywgSGFsZkNlaWwsIEhh
bGZGbG9vciwgSGFsZkV4cGFuZCwgSGFsZlRydW5jLCBIYWxmRXZlbiB9OwogCiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKQEAgLTExMyw2ICsxMTks
OSBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3Bs
YXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFj
dERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2ln
bkRpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJv
dW5kaW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5
U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3Vw
aW5nVmFsdWUoVk0mLCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1
bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
QEAgLTEzMyw2ICsxNDIsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
IHsgMyB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2ln
bmVkIG1fcm91bmRpbmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxl
OjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OwogICAg
IEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsxNTAsOSBAQCBjbGFzcyBJ
bnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIENv
bXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9uIG1fbm90YXRp
b24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlz
cGxheTsKLSAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJhaWxpbmdaZXJv
RGlzcGxheSBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRv
IH07CisgICAgVXNlR3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5nOjpBbHdheXMg
fTsKKyAgICBSb3VuZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQgfTsKICAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDIzZDM4
NjNkMTYwMDQzMWVmNzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLmY0NGUxNzNhOGZlNzUzZjg4Zjgy
ZGUyZTk0NzMyOTZiMzViMTVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcgKzYxLDY5IEBA
IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxUeXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUlu
dGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICghbWluaW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91
bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAg
IHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3Bl
cnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaW50
bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBJbnRsUm91bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRs
Um91bmRpbmdQcmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5yb3VuZGluZ1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpB
dXRvIH0sIHsgIm1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJl
Y2lzaW9uIH0sIHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNz
UHJlY2lzaW9uIH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIs
IFwibW9yZVByZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5n
UHJpb3JpdHk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAKLSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwg
IW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29u
c3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGln
aXRzOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBp
bnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0
c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1
bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGlu
dGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
VmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVu
ZGVmaW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmlu
ZWRWYWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6
Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rp
b25EaWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rp
b25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNw
ZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1G
cmFjdGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25l
ZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxP
YmplY3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUp
ID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0
cyksIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6
bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBp
ZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMi
X3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmltdW1GcmFjdGlv
bkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVl
LmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3VuZGluZ1ByaW9y
aXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVlZEZkID0gKCFo
YXNTZCAmJiBub3RhdGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJvdW5kaW5nUHJp
b3JpdHkgIT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAobmVlZFNkKSB7
CisgICAgICAgIGlmIChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25p
ZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50
RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0
czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyMTsKICAgICAg
ICAgfQotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWlu
aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFj
dFJvdW5kaW5nOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgeworICAgICAgICBp
ZiAoaGFzRmQpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1
ZSA9IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAs
IDIwLCB1bmRlZmluZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAy
MCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1
bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBz
dGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVm
aW5lZFZhbHVlKQorICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6
bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyk7
CisgICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhh
biBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgICAgIGludGxJ
bnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0OworICAgICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
OwotICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7CisgICAgICAg
IGlmIChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lz
aW9uKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3Vu
ZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5kaW5nUHJpb3Jp
dHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNp
c2lvbjsKKyAgICAgICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJ
bnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2UgeworICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNp
c2lvbjsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7
CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7CisgICAgfQog
fQogCiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFm
NWE4NGMwMTk2ZThmNDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2Vh
YjMwYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4K
ICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+
CitSZXN1bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVz
dWx0VHlwZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXpl
cl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJ
TGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlh
dGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJU
KHZhbHVlcy5zaXplKCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9w
dGlvbnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBv
cHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFs
dWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc3lWYWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBu
b3RGb3VuZE1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsbGJhY2s7Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VU
Q29tcGFyaXNvbihVQ2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlh
ZTQ1NGQ2MmJmYzNkMjhhMzVlNDg5Li5kYWI0MjI2ZGU0YmQyYmM5OTM4ODI4ZmI2NTdkMjJhNmJh
OTJkOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAKQEAgLTMyLDggKzMyLDMxIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjdW5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1
cmFscnVsZXMuaD4KKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5j
bHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBV
X0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlm
IChwbHVyYWxSdWxlcykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciogZm9y
bWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShmb3Jt
YXR0ZXIpOworfQorI2VuZGlmCisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25E
ZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTMwLDc0IEBAIHZv
aWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGds
b2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9j
YWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAw
LCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxk
ZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7
CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVy
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2Vy
LXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNV
IDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3Np
Z25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0An
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgz
NjQKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
aW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNp
c2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRp
bmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7Cisg
ICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0
ZWQgPSBza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAgICBtX251bWJl
ckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlPj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBtX251bWJlclJhbmdlRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4odW51bXJm
X29wZW5Gb3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2sodXBjb252ZXJ0
ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVU5VTV9SQU5HRV9DT0xMQVBTRV9OT05F
LCBVTlVNX0lERU5USVRZX0ZBTExCQUNLX1JBTkdFLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAm
c3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxS
dWxlcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNlbHNlCisgICAgbV9u
dW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1h
dERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGxvY2FsZS5kYXRh
KCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDEzICsyMTQs
MTMgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorI2VuZGlmCiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgbV9wbHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQ
bHVyYWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBlKG1fbG9jYWxlLnV0ZjgoKS5k
YXRhKCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBV
UExVUkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBtX3BsdXJhbFJ1bGVzID0gc3Rk
Ojp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNf
b3BlbkZvclR5cGUobG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExV
UkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAg
ICAgICByZXR1cm47CkBAIC0xNTksOCArMjQ4LDEyIEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVs
ZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsK
ICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMs
IGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1i
ZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVt
YmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTgzLDggKzI3Niw5IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwbHVyYWxDYXRlZ29yaWVzIiksIGNh
dGVnb3JpZXMpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIEludGxOdW1iZXJGb3JtYXQ6OnJv
dW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOworICAgIHJldHVybiBvcHRpb25zOwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKQEAgLTE5OSwxMiArMjkz
LDU3IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJvdGhlciJfcyk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBhdXRvIGZv
cm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxl
dGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAg
ICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVm
ZmVyOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19z
ZWxlY3RGb3JtYXR0ZWQsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVy
YWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwor
I2Vsc2UKICAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdCg4KTsKICAgICBhdXRvIGxlbmd0aCA9
IHVwbHJ1bGVzX3NlbGVjdFdpdGhGb3JtYXQobV9wbHVyYWxSdWxlcy5nZXQoKSwgdmFsdWUsIG1f
bnVtYmVyRm9ybWF0LmdldCgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUi
X3MpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVu
Z3RoKSk7CisjZW5kaWYKK30KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmIChzdGFydCA+IGVuZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
YXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURl
bGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2
YWx1ZSJfcyk7CisKKyAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZv
cm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJf
cyk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvclJhbmdlLCBtX3BsdXJhbFJ1
bGVzLmdldCgpLCByYW5nZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCA2
ZDNhY2FiODRlODE0ZTVmN2MwN2QwMjRmM2UyNWZmMmU1ZjBmNmU0Li41Zjk2NDAxOTk5MzEzNjJl
ZTU5MGYxMWFkNTdmNjZkNjRlODhkNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjgsMTEgKzI4LDI4IEBACiAKICNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+Ci0jaW5jbHVk
ZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNV
SGVscGVycy5oPgogCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNV
X1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCitzdHJ1Y3QgVVBs
dXJhbFJ1bGVzOworc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlcjsKKwogbmFtZXNwYWNlIEpT
QyB7CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKik7Cit9OworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVy
IHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9y
bWF0dGVyKik7Cit9OworI2VuZGlmCisKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkg
OiB1aW50OF90OwogCiBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CkBAIC02NCw2ICs4MSwxMCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9i
YWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEludGxQbHVyYWxSdWxlcyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKQEAgLTczLDExICs5NCwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29s
IHsgQ2FyZGluYWwsIE9yZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVwbHJ1bGVzX2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUo
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRl
ciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVy
Rm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7Cisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNl
bmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVn
ZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4
Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRiMTg2
ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5k
CiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBAQCBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2Jh
bE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBI
QVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3Jt
YXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90
b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNE
eW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90
b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxl
cyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJlcihnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2Vs
ZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgK
aW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0
ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBhY2M4MDRlZWJmYmJmZDI5ZjNjNjNjYWM0MzY2YTA2MGY2ZmNiNjIxLi5l
MzE5MjUxZDVjODRjZTM0NmQ3ZGNlM2ExYzM0MjA1NTA5ZjkzYjJiIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDIxLTEwLTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJGb3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanM6
CisKIDIwMjEtMTAtMjMgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAg
ICAgICB1cGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVy
YWxydWxlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKaW5kZXggYTQz
OGVhY2UxZDY2NDdhMDlkNDE2NTYyNjcxMjFjY2Q0ODUwNWUwNy4uZDMyNzczZTJhZTZmNzQ3NTc4
NGU3ZGFkMjIwNDc2MTc4YzJjMzdmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1w
bHVyYWxydWxlcy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCkBA
IC0yOTQsMyArMjk0LDggQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7
CiBzaG91bGRCZShuZXcgSW50bC5QbHVyYWxSdWxlcygnYXInKS5yZXNvbHZlZE9wdGlvbnMoKS5w
bHVyYWxDYXRlZ29yaWVzLmpvaW4oKSwgJ2ZldyxtYW55LG9uZSx0d28semVybyxvdGhlcicpOwog
c2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkucGx1
cmFsQ2F0ZWdvcmllcy5qb2luKCksICdvbmUsb3RoZXInKTsKIHNob3VsZEJlKG5ldyBJbnRsLlBs
dXJhbFJ1bGVzKCdlbicsIHt0eXBlOiAnb3JkaW5hbCd9KS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVy
YWxDYXRlZ29yaWVzLmpvaW4oKSwgJ2ZldyxvbmUsdHdvLG90aGVyJyk7CisKK2lmIChJbnRsLlBs
dXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSkgeworICAgIGNvbnN0IHBsID0gbmV3IElu
dGwuUGx1cmFsUnVsZXMoInNsIik7CisgICAgc2hvdWxkQmUocGwuc2VsZWN0UmFuZ2UoMTAyLCAy
MDEpLCBgZmV3YCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442299</attachid>
            <date>2021-10-24 02:56:23 -0700</date>
            <delta_ts>2021-10-24 03:33:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024025622.patch</filename>
            <type>text/plain</type>
            <size>56285</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5lY2VjNzgyZjI4ODRjMzZl
NDYxZjQyOWRiYjYzMWU1YjhmZWQxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OlVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlFeHRyYWN0
U2FmZURvdWJsZUludGVnZXIpOgorCiAyMDIxLTEwLTIyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbml0cyBmcm9tIDIzMjAxOQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGYzYTYxODZmNjNmODM0NDJkZjE3Y2UyOTM0
MjA0Mjg5M2YyYmRmLi44NDA3MmE4ODM1ODRjYjc3NGY3YTkxZTQyMjliZGQyM2VhYzhjYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2ICsxODQ1LDcgQEAKIAkJRTMw
NzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJCUUzMDcxNzhEMjRDNzgyOUEw
MERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRs
TG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8q
IEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CisJCUUz
MDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOEYyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUzMEU4QTU0MjZERTJFNDgwMERB
NDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBFOEE1NjI2REUyRTQ4MDBEQTQ5
MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oICovOyB9OwpAQCAtMTE4MzQsNiArMTE4MzUsNyBAQAogCQkJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3
NkYgLyogSW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uYzIyMTY3NGJjNmMzMDk1
YjY2OTJhMjAzMzU5ZThmNTNjMWNkYTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODQwLDcgKzg0MCw3IEBAIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZp
bmUgVV9ISURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5iNzQwZTk4MmQyNWZkNGU5NDM5NGQ1ZjA3YzI0OWI4Njg0MDUwZjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC00MTAsOCAr
NDkwLDM0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcjJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKLSAgICAgICAgLy8gRG8gbm90IHNldCBhbnl0
aGluZy4KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5
YTUwMDI5ZmQwNGE4MzY0CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxl
dG9ucy5tZCNwcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRz
OyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWlu
aW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUg
PT0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIC8vIENvbmZpZ3VyZSB0aGlzIGp1c3QgYWZ0ZXIgcHJlY2lz
aW9uLgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWlu
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCN0cmFpbGlu
Zy16ZXJvLWRpc3BsYXkKKyAgICBzd2l0Y2ggKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJ
Q1U2OX4gc3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24g
aWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2Qw
MzM1ZDU2OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKQEAgLTQ2MiwxMCArNTY4LDM0IEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBz
aWduLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6
Ok5lZ2F0aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWdu
IGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBv
cnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29t
bWl0LzFhYTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYg
KFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFj
Y291bnRpbmcpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24t
YWNjb3VudGluZy1uZWdhdGl2ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vl
cy8zCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4v
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5n
CisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFs
c2U6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBV
c2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3Vw
LWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxk
ZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6
OnZlcmJvc2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2NTksNyBAQCB2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2UgU2lnbkRpc3Bs
YXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAgIGNhc2Ug
U2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNl
IGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtNTU5LDExICs2OTAsMjcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51
bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5U
X0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRT
LCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBs
aW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMg
Y2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykgeworICAgIGNhc2UgVXNlR3Jv
dXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVXNlR3JvdXBpbmc6Ok1pbjI6CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2Ug
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5n
OjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgp
LCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
dW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdfVVNF
RCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9
CkBAIC03MjcsMTEgKzg3NCw4MSBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2ln
bkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAgICAgIHJldHVybiAi
YWx3YXlzIl9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CiAgICAgICAgIHJl
dHVybiAiZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKKyAg
ICAgICAgcmV0dXJuICJuZWdhdGl2ZSJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwg
SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGlu
Z01vZGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5n
TW9kZTo6Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpGbG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5n
TW9kZTo6RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4cGFuZCJfczsKKyAgICBjYXNlIFJvdW5k
aW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAidHJ1bmMiX3M7CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1cm4gImhhbGZDZWlsIl9zOworICAgIGNh
c2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAgICAgIHJldHVybiAiaGFsZkZsb29yIl9z
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICByZXR1cm4gImhh
bGZFeHBhbmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYzoKKyAgICAgICAg
cmV0dXJuICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFdmVuOgor
ICAgICAgICByZXR1cm4gImhhbGZFdmVuIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJh
bCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVy
b0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sKKyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVy
b0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CisgICAgICAg
IHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJ
bnRlZ2VyOgorICAgICAgICByZXR1cm4gInN0cmlwSWZJbnRlZ2VyIl9zOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9
CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5n
KEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdU
eXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOgorICAgICAgICByZXR1cm4g
ImF1dG8iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAg
ICAgICByZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpMZXNzUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gImxlc3NQcmVjaXNpb24iX3M7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51
bGwoKTsKIH0KIAorSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZN
JiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7CisgICAgc3dpdGNoICh1c2VHcm91cGlu
ZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICByZXR1cm4ganNCb29s
ZWFuKGZhbHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
QXV0bzoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0Ojpy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKQEAg
LTc2NCwxNCArOTgxLDIzIEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGln
aXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNl
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVh
bihtX3VzZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91
c2VHcm91cGluZykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25T
dHJpbmcobV9ub3RhdGlvbikpKTsKICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246
OkNvbXBhY3QpCiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29t
cGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7Cisg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2Rl
KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRp
bmdJbmNyZW1lbnQsIGpzTnVtYmVyKG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgdHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5n
WmVyb0Rpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5yb3VuZGluZ1ByaW9yaXR5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJp
b3JpdHlTdHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApp
bmRleCAzOGE3NzBjNTlkNDEwNzAwZjg5YzQ5Zjc2OWE5MTQ5ZGJjYTg1N2RlLi5iNGFjZmZkZjlj
ZDI2ZTAzYzFhNDY5MWIwNDE4M2M2Zjk3ZjA2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC00OCw3ICs0OCw4IEBAIGNsYXNz
IEludGxGaWVsZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBS
ZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5n
VHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBh
Y3RSb3VuZGluZyB9OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZy
YWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNp
c2lvbiB9OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRv
LCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlv
biA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3Qg
fTsKIHRlbXBsYXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBJbnRsTm90YXRpb24pOwogCkBAIC05NCw2ICs5NSw4IEBAIGNsYXNzIEludGxO
dW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0
aWMgSW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CiAKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nUHJpb3JpdHlT
dHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1h
dChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEw
NSw3ICsxMDgsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBT
dGFuZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50
OF90IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3Bs
YXkgOiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5
IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKKyAgICBlbnVt
IGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2Vw
dFplcm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1plcm9EaXNwbGF5IDog
dWludDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBjbGFzcyBVc2VHcm91
cGluZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07CisgICAgZW51bSBj
bGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwgRmxvb3IsIEV4cGFuZCwgVHJ1bmMs
IEhhbGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhhbGZUcnVuYywgSGFsZkV2ZW4gfTsK
IAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CkBA
IC0xMTMsNiArMTE5LDkgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3Ry
aW5nKFVuaXREaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5
U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNw
bGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5n
TW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHJhaWxp
bmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0aWMgSlNW
YWx1ZSB1c2VHcm91cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCkBAIC0xMzMsNiArMTQyLDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1G
cmFjdGlvbkRpZ2l0cyB7IDMgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1f
c3R5bGUgeyBTdHlsZTo6RGVjaW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5
RGlzcGxheTsKICAgICBDdXJyZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMTUw
LDkgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICBDb21wYWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIEludGxOb3Rh
dGlvbiBtX25vdGF0aW9uIHsgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNw
bGF5IG1fc2lnbkRpc3BsYXk7Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAg
IFRyYWlsaW5nWmVyb0Rpc3BsYXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJv
RGlzcGxheTo6QXV0byB9OworICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91
cGluZzo6QWx3YXlzIH07CisgICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kIH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlw
ZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMu
aAppbmRleCAyM2QzODYzZDE2MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi5mNDRlMTcz
YThmZTc1M2Y4OGY4MmRlMmU5NDczMjk2YjM1YjE1Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTYx
LDQ3ICs2MSw2OSBAQCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNl
LT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBp
ZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGln
aXRzOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAx
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
dW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgSW50bFJvdW5kaW5nUHJpb3JpdHkgcm91bmRpbmdQcmlvcml0eSA9IGlu
dGxPcHRpb248SW50bFJvdW5kaW5nUHJpb3JpdHk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+cm91bmRpbmdQcmlvcml0eSwgeyB7ICJhdXRvIl9zLCBJbnRsUm91bmRp
bmdQcmlvcml0eTo6QXV0byB9LCB7ICJtb3JlUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlv
cml0eTo6TW9yZVByZWNpc2lvbiB9LCB7ICJsZXNzUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQ
cmlvcml0eTo6TGVzc1ByZWNpc2lvbiB9IH0sICJyb3VuZGluZ1ByaW9yaXR5IG11c3QgYmUgZWl0
aGVyIFwiYXV0b1wiLCBcIm1vcmVQcmVjaXNpb25cIiwgb3IgXCJsZXNzUHJlY2lzaW9uXCIiX3Ms
IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogCi0gICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1Vu
ZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
Ci0gICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7
Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgc3BlY2lmaWVkTWluaW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGln
aXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1G
cmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdp
dHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGlmIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdp
dHMgIT0gdW5kZWZpbmVkVmFsdWUpCi0gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0ID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgc3BlY2lmaWVk
TWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVk
TWluaW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkg
OiBqc051bWJlcihzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVu
ZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRNYXhpbXVt
RnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMs
IDAsIDIwLCBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRp
Z2l0cykgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZy
YWN0aW9uRGlnaXRzIl9zKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBib29sIGhhc1NkID0g
IW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNGZCA9ICFt
aW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rp
b25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFzU2QgfHwg
cm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAgICBib29s
IG5lZWRGZCA9ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB8
fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworCisgICAg
aWYgKG5lZWRTZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2Jh
bE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMt
Pm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGlt
dW1TaWduaWZpY2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9
IDE7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
ID0gMjE7CiAgICAgICAgIH0KLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBh
Y3QpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGlu
Z1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChuZWVkRmQp
IHsKKyAgICAgICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQg
dW5kZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0
aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlv
bkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVtRnJhY3Rp
b25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0
aW9uRGlnaXRzID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11
bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25E
aWdpdHMgPSBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRz
ID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMg
aXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9u
RGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21p
bmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGludGxJbnN0YW5j
ZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKLSAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdDsKLSAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpZiAobmVlZFNkIHx8IG5lZWRG
ZCkgeworICAgICAgICBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0
eTo6TW9yZVByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5
cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBlbHNlIGlmIChy
b3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uKQor
ICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5
cGU6Okxlc3NQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKGhhc1NkKQorICAgICAgICAgICAg
aW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmlj
YW50RGlnaXRzOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91
bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5
cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMgPSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gMDsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cyA9IDE7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSAyOworICAgIH0KIH0KIAogY2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAppbmRleCBkZWYwMjliMTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0NmJlNzI4Li5i
ZDRkMWNhMzNjZjEyMTYwYTkwYjIxMTU3ODRiZjQ2MDMxYmU1NmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcApAQCAtODksMjMgKzg5LDE4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRs
TnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
SlNWYWx1ZSBiaWdJbnRPck51bWJlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1lcmlj
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgaWYgKGJpZ0ludE9yTnVtYmVy
LmlzTnVtYmVyKCkpIHsKICAgICAgICAgZG91YmxlIHZhbHVlID0gYmlnSW50T3JOdW1iZXIuYXNO
dW1iZXIoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZv
cm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSk7Ci0gICAgfQotCi0jaWYgVVNFKEJJR0lOVDMyKQot
ICAgIGlmIChiaWdJbnRPck51bWJlci5pc0JpZ0ludDMyKCkpIHsKLSAgICAgICAgSlNCaWdJbnQq
IHZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBiaWdJbnRPck51bWJl
ci5iaWdJbnQzMkFzSW50MzIoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiAgICAgfQotI2Vu
ZGlmCisKKyAgICBBU1NFUlQoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQoKSk7CisgICAgaWYgKGF1
dG8gdmFsdWUgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdFNhZmVEb3VibGVJbnRlZ2VyKGJpZ0ludE9y
TnVtYmVyKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZS52YWx1ZSgpKSkpOwog
CiAgICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKICAgICBKU0JpZ0lu
dCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oCmluZGV4IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAxOTZlOGY0MTI0NjM2MWEuLjQx
YzJiZmRmNmVlNTE1YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTUxLDYgKzE1
MSw0NSBAQCBSZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxsYmFjazsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0
VHlwZSBmYWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0
ZXJhbCwgUmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwg
UmVzdWx0VHlwZSBmYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
aW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2RpZmYuaHRtbCNzZWMtZ2V0c3Ry
aW5nb3Jib29sZWFub3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA+IDApOworCisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIGZh
bGxiYWNrOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
aWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4o
KSAmJiB2YWx1ZS5hc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlVmFsdWU7CisK
KyAgICAgICAgYm9vbCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBp
ZiAoIXZhbHVlQm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzeVZhbHVlOworCisgICAg
ICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgaWYgKGVudHJ5LmZp
cnN0ID09IHN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5zZWNvbmQ7
CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5kTWVzc2FnZSkpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBmYWxsYmFjazsKK30KIAogQUxXQVlT
X0lOTElORSBib29sIGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKFVDaGFyIGNoYXJhY3Rl
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwCmluZGV4IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYyYmZjM2QyOGEzNWU0ODkuLmRh
YjQyMjZkZTRiZDJiYzk5Mzg4MjhmYjY1N2QyMmE2YmE5MmQ5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMzIsOCArMzIs
MzEgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjZW5kaWYKKyNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2lmIEhBVkUoSUNV
X1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5n
ZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9EUkFGVF9BUEkgMQorCiBuYW1l
c3BhY2UgSlNDIHsKIAordm9pZCBVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVy
YWxSdWxlcyogcGx1cmFsUnVsZXMpCit7CisgICAgaWYgKHBsdXJhbFJ1bGVzKQorICAgICAgICB1
cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Cit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9S
QU5HRV9GT1JNQVRURVIpCit2b2lkIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlclJhbmdlRm9ybWF0dGVyKiBmb3JtYXR0ZXIpCit7CisgICAgaWYgKGZvcm1h
dHRlcikKKyAgICAgICAgdW51bXJmX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKwogY29u
c3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFs
UnVsZXMpIH07CiAKIHVzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVlbnVt
X2Nsb3NlPjsKQEAgLTEwNyw4ICsxMzAsNzQgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRp
YWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAg
ICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25z
LCAwLCAzLCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogCisgICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQg
PSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVu
dW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
KyAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVpbGRlcjsKKyAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKworICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ludGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCIgaW50ZWdlci13aWR0aC8iLCBXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjcgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5z
dGVhZCBvZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzOyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAg
IHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAn
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3Jt
YXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lv
bgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3Jl
UHJlY2lzaW9uOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvZDdkYjZj
MWY4NjU1YmI1MzE1MzY5NWIwOWE1MDAyOWZkMDRhODM2NAorICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21p
bmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnMCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcvJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
QCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKG1fcm91bmRpbmdUeXBlID09IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb24gPyAn
cicgOiAncycpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcgc2tlbGV0b24g
PSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmll
dyhza2VsZXRvbik7CisgICAgYXV0byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKTsKKworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2U+Pih1bnVtZl9vcGVu
Rm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5n
dGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFu
Z2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxh
cHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxl
bmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tf
UkFOR0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorI2Vsc2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1f
REVDSU1BTCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMjUsMTMgKzIxNCwxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAg
ICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9T
SUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJ
bnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9Cisj
ZW5kaWYKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0g
c3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVs
ZXNfb3BlbkZvclR5cGUobV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9y
ZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0
YXR1cykpOworICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVz
LCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgp
LCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJB
TF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsy
NDgsMTIgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJl
cihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1i
ZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rp
b25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODMsOCArMjc2LDkgQEAgSlNP
YmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3Jv
dW5kaW5nVHlwZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7
CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5LDEyICsyOTMsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFs
UnVsZXM6OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUp
IGNvbnMKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsK
IAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1Vf
VV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlx
dWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1
bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251
bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1
cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVl
Il9zKTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxS
dWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwg
OD4gcmVzdWx0KDgpOwogICAgIGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1h
dChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJp
bmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVs
ZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRl
cik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2Vy
IHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVf
cHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+
Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9m
b3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5k
LCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwg
MzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBs
cnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBi
dWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2
YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9Cisj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYz
ZTI1ZmYyZTVmMGY2ZTQuLjVmOTY0MDE5OTkzMTM2MmVlNTkwZjExYWQ1N2Y2NmQ2NGU4OGQ1MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CkBAIC0yOCwxMSArMjgsMjggQEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNp
bmNsdWRlIDx1bmljb2RlL3VudW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKKyNpZiAhZGVmaW5l
ZChIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1VfVkVSU0lPTl9N
QUpPUl9OVU0gPj0gNjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVS
IDEKKyNlbmRpZgorI2VuZGlmCisKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CitzdHJ1Y3QgVU51bWJl
clJhbmdlRm9ybWF0dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RydWN0IFVQbHVyYWxSdWxl
c0RlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVUGx1cmFs
UnVsZXMqKTsKK307CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3Ry
dWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqKTsKK307CisjZW5kaWYKKwog
ZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQ
bHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTY0LDYgKzgx
LDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkg
Y29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFs
dWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQp
IGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3Ry
dWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMsMTEgKzk0LDE4
IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5hbCB9Owog
Ci0gICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBscnVsZXNfY2xv
c2U+OwogICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Ns
b3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0Rl
bGV0ZXI+IG1fcGx1cmFsUnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtZl9jbG9z
ZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0
ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZvcm1hdHRlciwg
VU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNl
bmRpZgorI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZv
cm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJpbmcgbV9sb2Nh
bGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuY3BwCmluZGV4IGM4MGJmYTIyMjNmZDUwZThiOTc4MThjZWQ0YjA3NThiYmNkZTZjMjcu
LmVjNjlmZTI5YmIyMzk4MGM2NDdiYTRhZjA2NGIxODY4NzE2YTlhOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmNwcApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3Qp
OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5n
ZSk7CisjZW5kaWYKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogCiB9CkBAIC01MCwxMCArNTMsMTAg
QEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6c19pbmZvID0geyAi
SW50bC5QbHVyYWxSdWxlcyIsICZCYXNlOjoKIEBlbmQKICovCiAKLUludGxQbHVyYWxSdWxlc1By
b3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
KiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KIApAQCAtNjcsMTEgKzcwLDE1IEBAIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6SW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAK
LXZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2
b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWxlY3RSYW5n
ZSwgaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CisjZW5kaWYKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxl
Y3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CkBAIC05Miw2ICs5OSwyNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3QoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGVGdW5jU2VsZWN0UmFuZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvcGx1cmFscnVsZXMvZGlm
Zi5odG1sI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3RyYW5nZQorICAgIElu
dGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxl
cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsdXJhbFJ1bGVzKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisKKyAgICBkb3VibGUgc3Rh
cnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBlbmQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3RSYW5nZShnbG9iYWxPYmplY3QsIHN0
YXJ0LCBlbmQpKSk7Cit9CisjZW5kaWYKKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAppbmRleCA2ZmFhM2E0Zjc4YWVhNTk4NDMy
Y2IxMzAzN2YxMDM1OTM2MjUwODRiLi42MWUwOGIyZjRkMmNhYjA2M2M3NWM2OTc2YzFiMzYwZmFm
ZTVmZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIHBy
aXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Ci0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcw
ZjAyYjcxZWRjYjMzNGRmZDc4Li4zYzQ3MTk0NTM3NTc4YWIxMThjNjI0ZDY5YzU1NDAyMjRlODQx
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2
ICs0NjIsOCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICByZXR1cm4gaGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHRyeUV4dHJhY3RTYWZlRG91YmxlSW50ZWdlcihKU1ZhbHVlIGJpZ0ludFZhbHVlKTsK
KwogcHJpdmF0ZToKICAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIERpZ2l0KiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIApAQCAtNjc2LDQgKzY3OCwzNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
dHJ5Q29udmVydFRvQmlnSW50MzIoSlNCaWdJbnQqIGJpZ0ludCkKICAgICByZXR1cm4gYmlnSW50
OwogfQogCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBKU0JpZ0ludDo6dHJ5
RXh0cmFjdFNhZmVEb3VibGVJbnRlZ2VyKEpTVmFsdWUgYmlnSW50VmFsdWUpCit7CisgICAgQVNT
RVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
YmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gYmlnSW50VmFsdWUuYmln
SW50MzJBc0ludDMyKCk7CisjZW5kaWYKKyAgICBBU1NFUlQoYmlnSW50VmFsdWUuaXNIZWFwQmln
SW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQo
KTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
dWludDY0X3QgdmFsdWUgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4
KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2YWx1ZSA9IGJpZ0ludC0+ZGlnaXQoMCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7CisgICAgICAgIGlm
IChiaWdJbnQtPmxlbmd0aCgpID4gMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHVpbnQ2NF90IHZhbHVlID0gYmlnSW50LT5kaWdpdCgwKTsKKyAgICAgICAgaWYg
KGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIHZhbHVlIHw9IChzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKworICAgIGlmICh2
YWx1ZSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpCisgICAgICAg
IHJldHVybiAoYmlnSW50LT5zaWduKCkpID8gLXN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIDog
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYzY2FjNDM2NmEwNjBm
NmZjYjYyMS4uZTMxOTI1MWQ1Yzg0Y2UzNDZkN2RjZTNhMWMzNDIwNTUwOWY5M2IyYiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLXBsdXJh
bHJ1bGVzLmpzOgorCiAyMDIxLTEwLTIzICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgdXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2ludGwtcGx1cmFscnVsZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpz
CmluZGV4IGE0MzhlYWNlMWQ2NjQ3YTA5ZDQxNjU2MjY3MTIxY2NkNDg1MDVlMDcuLmQzMjc3M2Uy
YWU2Zjc0NzU3ODRlN2RhZDIyMDQ3NjE3OGMyYzM3ZmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtcGx1cmFscnVsZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxy
dWxlcy5qcwpAQCAtMjk0LDMgKzI5NCw4IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yVHlwZSkgewogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2FyJykucmVzb2x2ZWRP
cHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5qb2luKCksICdmZXcsbWFueSxvbmUsdHdvLHplcm8s
b3RoZXInKTsKIHNob3VsZEJlKG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCdlbicpLnJlc29sdmVkT3B0
aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigpLCAnb25lLG90aGVyJyk7CiBzaG91bGRCZShu
ZXcgSW50bC5QbHVyYWxSdWxlcygnZW4nLCB7dHlwZTogJ29yZGluYWwnfSkucmVzb2x2ZWRPcHRp
b25zKCkucGx1cmFsQ2F0ZWdvcmllcy5qb2luKCksICdmZXcsb25lLHR3byxvdGhlcicpOworCitp
ZiAoSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAgICBjb25zdCBw
bCA9IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCJzbCIpOworICAgIHNob3VsZEJlKHBsLnNlbGVjdFJh
bmdlKDEwMiwgMjAxKSwgYGZld2ApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442300</attachid>
            <date>2021-10-24 03:33:36 -0700</date>
            <delta_ts>2021-10-24 04:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024033336.patch</filename>
            <type>text/plain</type>
            <size>56823</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5lY2VjNzgyZjI4ODRjMzZl
NDYxZjQyOWRiYjYzMWU1YjhmZWQxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OlVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlFeHRyYWN0
U2FmZURvdWJsZUludGVnZXIpOgorCiAyMDIxLTEwLTIyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbml0cyBmcm9tIDIzMjAxOQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGYzYTYxODZmNjNmODM0NDJkZjE3Y2UyOTM0
MjA0Mjg5M2YyYmRmLi44NDA3MmE4ODM1ODRjYjc3NGY3YTkxZTQyMjliZGQyM2VhYzhjYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2ICsxODQ1LDcgQEAKIAkJRTMw
NzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJCUUzMDcxNzhEMjRDNzgyOUEw
MERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRs
TG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8q
IEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CisJCUUz
MDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOEYyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUzMEU4QTU0MjZERTJFNDgwMERB
NDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBFOEE1NjI2REUyRTQ4MDBEQTQ5
MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oICovOyB9OwpAQCAtMTE4MzQsNiArMTE4MzUsNyBAQAogCQkJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3
NkYgLyogSW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uYzIyMTY3NGJjNmMzMDk1
YjY2OTJhMjAzMzU5ZThmNTNjMWNkYTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODQwLDcgKzg0MCw3IEBAIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZp
bmUgVV9ISURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5iMWQwM2Q2NzAxZWQ1ZWU2YjE4NzM4NzJjNjJjNjczMGQxNGExN2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC00MTAsOCAr
NDkwLDM4IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcjJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKLSAgICAgICAgLy8gRG8gbm90IHNldCBhbnl0
aGluZy4KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBCZWZvcmUgSW50
bC5OdW1iZXJGb3JtYXQgdjMsIGl0IHdhcyBDb21wYWN0Um91bmRpbmcgbW9kZSwgd2hlcmUgd2Ug
ZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4KKyAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1Ug
aXMgfjY4LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1ham9yVmVyc2lv
bigpID49IDY5KSB7CisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0Cisg
ICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFp
bi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJlY2lz
aW9uCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9t
aW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdA
Jyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVBy
ZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQor
ICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1pl
cm9EaXNwbGF5OjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyB0
cmFpbGluZyB6ZXJvIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRv
ZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNkMzYK
KyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtNDYyLDEwICs1NzIsMzQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXplcm8i
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CisgICAg
ICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdub3Jl
IHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhlMDZl
Y2M5OWJmZjQ0MmRkMzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1ham9y
VmVyc2lvbigpID49IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5lZ2F0
aXZlIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIHNpZ24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBpZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2ggKG1f
dXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFVzZUdyb3VwaW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIg
Z3JvdXAtbWluMiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRv
OgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOworICAg
IH0KIAogICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOwog
ICAgIGRhdGFMb2dMbklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tlbGV0
b24pOwpAQCAtNTI5LDYgKzY2Myw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6
ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2Fz
ZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAg
IGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVn
YXRpdmU6CiAgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTksMTEgKzY5NCwy
NyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZSht
X251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lz
aW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBu
b3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtl
ZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
c3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6Cisg
ICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQ
SU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
TWluMjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMg
bm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1
dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAg
ICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJTkdf
VVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVtX3NldEF0dHJpYnV0
ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5n
KTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VO
RElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTcyNywxMSArODc4
LDgxIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhT
aWduRGlzcGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAg
Y2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJv
Il9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5l
Z2F0aXZlIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBz
d2l0Y2ggKHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAg
ICAgICByZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAg
ICAgICByZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6Cisg
ICAgICAgIHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoK
KyAgICAgICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNl
aWw6CisgICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkhhbGZGbG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAg
ICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVu
YyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAi
aGFsZkV2ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3Jt
YXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGlu
Z1plcm9EaXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9z
OworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAg
IHJldHVybiAic3RyaXBJZkludGVnZXIiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlw
ZSByb3VuZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNl
IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9y
ZVByZWNpc2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246
CisgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGlu
ZyB1c2VHcm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBV
c2VHcm91cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAg
IGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3
YXlzIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICs5ODUsMjMg
QEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1G
cmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcp
KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2VHcm91cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90
YXRpb24iKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9u
KSkpOwogICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29t
cGFjdERpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmlu
ZyhtX2NvbXBhY3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCByb3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNO
dW1iZXIobV9yb3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5n
KHZtLCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsK
KyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJp
b3JpdHksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3Jv
dW5kaW5nVHlwZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1OWQ0
MTA3MDBmODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLmI0YWNmZmRmOWNkMjZlMDNjMWE0NjkxYjA0
MTgzYzZmOTdmMDZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW50bEZpZWxkSXRlcmF0
b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9u
S2V5IDogdWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7
IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07Citl
bnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNp
Z25pZmljYW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVtIGNs
YXNzIEludGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNpb24s
IExlc3NQcmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0
YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8dHlw
ZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxO
b3RhdGlvbik7CiAKQEAgLTk0LDYgKzk1LDggQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9y
bWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAor
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRp
bmdUeXBlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJl
Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtMTA1LDcgKzEwOCwxMCBAQCBj
bGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIGVudW0gY2xhc3MgQ3VycmVuY3lTaWduIDogdWludDhfdCB7IFN0YW5kYXJkLCBBY2NvdW50
aW5nIH07CiAgICAgZW51bSBjbGFzcyBVbml0RGlzcGxheSA6IHVpbnQ4X3QgeyBTaG9ydCwgTmFy
cm93LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBDb21wYWN0RGlzcGxheSA6IHVpbnQ4X3QgeyBT
aG9ydCwgTG9uZyB9OwotICAgIGVudW0gY2xhc3MgU2lnbkRpc3BsYXkgOiB1aW50OF90IHsgQXV0
bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybyB9OworICAgIGVudW0gY2xhc3MgU2lnbkRpc3Bs
YXkgOiB1aW50OF90IHsgQXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybywgTmVnYXRpdmUg
fTsKKyAgICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90IHsgQXV0bywg
U3RyaXBJZkludGVnZXIgfTsKKyAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDogdWludDhfdCB7
IEZhbHNlLCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKKyAgICBlbnVtIGNsYXNzIFJvdW5kaW5nTW9k
ZSA6IHVpbnQ4X3QgeyBDZWlsLCBGbG9vciwgRXhwYW5kLCBUcnVuYywgSGFsZkNlaWwsIEhhbGZG
bG9vciwgSGFsZkV4cGFuZCwgSGFsZlRydW5jLCBIYWxmRXZlbiB9OwogCiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBj
dXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKQEAgLTExMyw2ICsxMTksOSBA
QCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkp
OwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERp
c3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRp
c3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5k
aW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3Ry
aW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5n
VmFsdWUoVk0mLCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0
aW9uPiBtX2JvdW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKQEAg
LTEzMyw2ICsxNDIsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsg
MyB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OwogICAg
IHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9OworICAgIHVuc2lnbmVk
IG1fcm91bmRpbmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpE
ZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNwbGF5OwogICAgIEN1
cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsxNTAsOSBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIENvbXBh
Y3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9uIG1fbm90YXRpb24g
eyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkgbV9zaWduRGlzcGxh
eTsKLSAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJhaWxpbmdaZXJvRGlz
cGxheSBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH07
CisgICAgVXNlR3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5nOjpBbHdheXMgfTsK
KyAgICBSb3VuZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfTsKICAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsgSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDIzZDM4NjNk
MTYwMDQzMWVmNzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLmY0NGUxNzNhOGZlNzUzZjg4ZjgyZGUy
ZTk0NzMyOTZiMzViMTVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcgKzYxLDY5IEBAIHZv
aWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEludGxUeXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUludGVn
ZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICghbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHVu
c2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMjEsIDIxKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaW50bElu
c3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERp
Z2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9
IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBJ
bnRsUm91bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91
bmRpbmdQcmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
b3VuZGluZ1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRv
IH0sIHsgIm1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lz
aW9uIH0sIHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJl
Y2lzaW9uIH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwi
bW9yZVByZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJp
b3JpdHk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1h
eGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRz
OwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1Zh
bHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRl
ZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxE
ZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFs
dWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVm
aW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRW
YWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1p
bihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25E
aWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVm
YXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNp
ZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFj
dGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmpl
Y3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8g
anNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyks
IHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4
KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAo
bWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3Mp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
VmFsdWUuaXNVbmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlz
VW5kZWZpbmVkKCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3VuZGluZ1ByaW9yaXR5
ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVlZEZkID0gKCFoYXNT
ZCAmJiBub3RhdGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJvdW5kaW5nUHJpb3Jp
dHkgIT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAobmVlZFNkKSB7Cisg
ICAgICAgIGlmIChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmlj
YW50RGlnaXRzLCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGln
aXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGln
aXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgaW50bEluc3RhbmNl
LT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZpY2FudERpZ2l0czsK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAgICAg
IGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyMTsKICAgICAgICAg
fQotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11
bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJv
dW5kaW5nOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgeworICAgICAgICBpZiAo
aGFzRmQpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9
IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMg
PSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIw
LCB1bmRlZmluZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0g
aW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwg
dW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRl
ZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6
Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMp
OworICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5l
ZFZhbHVlKQorICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWF4
KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBtYXhpbXVtRnJhY3Rp
b25EaWdpdHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgICAgIGludGxJbnN0
YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0OworICAgICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlw
ZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0Owot
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7CisgICAgICAgIGlm
IChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9u
KQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGlu
Z1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5kaW5nUHJpb3JpdHkg
PT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAgICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lv
bjsKKyAgICAgICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
cm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRs
Um91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lv
bjsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7Cisg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwOworICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsKKyAgICAgICAg
aW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7CisgICAgfQogfQog
CiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IGRl
ZjAyOWIxNGRkM2I5ZWViYmFhNjQzOWM0ZTBiNGYzYTQ2YmU3MjguLmJkNGQxY2EzM2NmMTIxNjBh
OTBiMjExNTc4NGJmNDYwMzFiZTU2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC04OSwy
MyArODksMTggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5j
Rm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBKU1ZhbHVlIGJpZ0ludE9y
TnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewog
ICAgICAgICBkb3VibGUgdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKTsKLSAgICB9Ci0KLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgaWYgKGJpZ0ludE9y
TnVtYmVyLmlzQmlnSW50MzIoKSkgewotICAgICAgICBKU0JpZ0ludCogdmFsdWUgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QsIGJpZ0ludE9yTnVtYmVyLmJpZ0ludDMyQXNJbnQz
MigpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5m
b3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKICAgICB9Ci0jZW5kaWYKKworICAgIEFTU0VS
VChiaWdJbnRPck51bWJlci5pc0JpZ0ludCgpKTsKKyAgICBpZiAoYXV0byB2YWx1ZSA9IEpTQmln
SW50Ojp0cnlFeHRyYWN0U2FmZURvdWJsZUludGVnZXIoYmlnSW50T3JOdW1iZXIpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlLnZhbHVlKCkpKSk7CiAKICAgICBBU1NFUlQoYmln
SW50T3JOdW1iZXIuaXNIZWFwQmlnSW50KCkpOwogICAgIEpTQmlnSW50KiB2YWx1ZSA9IGJpZ0lu
dE9yTnVtYmVyLmFzSGVhcEJpZ0ludCgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVt
YmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2Jh
bE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNmEw
MGFiNzA4OWNlZjg2YjZhZjVhODRjMDE5NmU4ZjQxMjQ2MzYxYS4uNDFjMmJmZGY2ZWU1MTVjMjM0
ZGNiY2U2MGNkYjMzMDNlYWIzMGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0xNTEsNiArMTUxLDQ1IEBAIFJlc3VsdFR5
cGUgaW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucywgUHJvcGVydHlOCiAgICAgcmV0dXJuIGZhbGxiYWNrOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXN1bHRUeXBlPgorUmVzdWx0VHlwZSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHksIFJlc3VsdFR5cGUgdHJ1ZVZhbHVlLCBSZXN1bHRUeXBlIGZhbHN5VmFsdWUs
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBl
Pj4gdmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxi
YWNrKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1h
dC12My9vdXQvbmVnb3RpYXRpb24vZGlmZi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRp
b24KKworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID4gMCk7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisKKyAgICBK
U1ZhbHVlIHZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIXZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpICYmIHZhbHVlLmFzQm9v
bGVhbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWVWYWx1ZTsKKworICAgICAgICBib29sIHZh
bHVlQm9vbGVhbiA9IHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWVCb29sZWFu
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHN5VmFsdWU7CisKKyAgICAgICAgU3RyaW5nIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVu
dHJ5IDogdmFsdWVzKSB7CisgICAgICAgICAgICBpZiAoZW50cnkuZmlyc3QgPT0gc3RyaW5nVmFs
dWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnNlY29uZDsKKyAgICAgICAgfQorICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgbm90Rm91bmRNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbGxiYWNrOworfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgY2Fu
VXNlQVNDSUlVQ0FEVUNFVENvbXBhcmlzb24oVUNoYXIgY2hhcmFjdGVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggZDhi
Yzk2NjlmY2JhYzJlMjA5YWU0NTRkNjJiZmMzZDI4YTM1ZTQ4OS4uZDQ1YTk0YzE4MGI3MmJmMjRl
MTFiZTVhOWNhYmU3MTViZDUzMTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0zMiw4ICszMiwzMSBAQAogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCisjaWZkZWYg
VV9ISURFX0RSQUZUX0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2luY2x1
ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcnJhbmdlZm9ybWF0dGVyLmg+Cisj
ZW5kaWYKKyNkZWZpbmUgVV9ISURFX0RSQUZUX0FQSSAxCisKIG5hbWVzcGFjZSBKU0MgewogCit2
b2lkIFVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKiBwbHVyYWxS
dWxlcykKK3sKKyAgICBpZiAocGx1cmFsUnVsZXMpCisgICAgICAgIHVwbHJ1bGVzX2Nsb3NlKHBs
dXJhbFJ1bGVzKTsKK30KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikK
K3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAoZm9ybWF0dGVyKQorICAgICAgICB1
bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgorCiBjb25zdCBDbGFzc0luZm8gSW50
bFBsdXJhbFJ1bGVzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxQbHVyYWxSdWxlcykgfTsKIAogdXNp
bmcgVUVudW1lcmF0aW9uRGVsZXRlciA9IElDVURlbGV0ZXI8dWVudW1fY2xvc2U+OwpAQCAtMTA3
LDggKzEzMCw3OCBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIHNldE51bWJlckZvcm1h
dERpZ2l0T3B0aW9ucyhnbG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIDAsIDMsIEludGxOb3Rh
dGlvbjo6U3RhbmRhcmQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAKKyAgICBhdXRvIGxvY2FsZSA9IG1fbG9jYWxlLnV0ZjgoKTsKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVD
SU1BTCwgbnVsbHB0ciwgMCwgbV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1
cykpOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIFN0cmluZ0J1aWxk
ZXIgc2tlbGV0b25CdWlsZGVyOworICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5n
LW1vZGUtaGFsZi11cCIpOworCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQjaW50ZWdlci13aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRl
Z2VyLXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7
IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworCisgICAgc3dpdGNoIChtX3JvdW5k
aW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6IHsK
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rl
ci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rp
b24tcHJlY2lzaW9uCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
IycpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJz
L3NrZWxldG9ucy5tZCNzaWduaWZpY2FudC1kaWdpdHMtcHJlY2lzaW9uCisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBCZWZvcmUg
SW50bC5OdW1iZXJGb3JtYXQgdjMsIGl0IHdhcyBDb21wYWN0Um91bmRpbmcgbW9kZSwgd2hlcmUg
d2UgZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4KKyAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJ
Q1UgaXMgfjY4LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1ham9yVmVy
c2lvbigpID49IDY5KSB7CisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0
CisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJl
Y2lzaW9uCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0g
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcv
Jyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCdAJyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQobV9yb3VuZGluZ1R5cGUgPT0gSW50bFJvdW5kaW5nVHlwZTo6TW9y
ZVByZWNpc2lvbiA/ICdyJyA6ICdzJyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7Cisg
ICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0
ZWQgPSBza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKKyAgICBtX251bWJl
ckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlPj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBtX251bWJlclJhbmdlRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4odW51bXJm
X29wZW5Gb3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2sodXBjb252ZXJ0
ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVU5VTV9SQU5HRV9DT0xMQVBTRV9OT05F
LCBVTlVNX0lERU5USVRZX0ZBTExCQUNLX1JBTkdFLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAm
c3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxS
dWxlcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNlbHNlCisgICAgbV9u
dW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1h
dERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGxvY2FsZS5kYXRh
KCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1LDEzICsyMTgs
MTMgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorI2VuZGlmCiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgbV9wbHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQ
bHVyYWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBlKG1fbG9jYWxlLnV0ZjgoKS5k
YXRhKCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBV
UExVUkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKKyAgICBtX3BsdXJhbFJ1bGVzID0gc3Rk
Ojp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNf
b3BlbkZvclR5cGUobG9jYWxlLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExV
UkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAg
ICAgICByZXR1cm47CkBAIC0xNTksOCArMjUyLDEyIEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVs
ZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsK
ICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVt
U2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgor
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMs
IGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1i
ZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVt
YmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTgzLDggKzI4MCw5IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwbHVyYWxDYXRlZ29yaWVzIiksIGNh
dGVnb3JpZXMpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIEludGxOdW1iZXJGb3JtYXQ6OnJv
dW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOworICAgIHJldHVybiBvcHRpb25zOwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKQEAgLTE5OSwxMiArMjk3
LDU3IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJvdGhlciJfcyk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBhdXRvIGZv
cm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxl
dGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAg
ICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVm
ZmVyOworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19z
ZWxlY3RGb3JtYXR0ZWQsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVy
YWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwor
I2Vsc2UKICAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdCg4KTsKICAgICBhdXRvIGxlbmd0aCA9
IHVwbHJ1bGVzX3NlbGVjdFdpdGhGb3JtYXQobV9wbHVyYWxSdWxlcy5nZXQoKSwgdmFsdWUsIG1f
bnVtYmVyRm9ybWF0LmdldCgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUi
X3MpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgbGVu
Z3RoKSk7CisjZW5kaWYKK30KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmIChzdGFydCA+IGVuZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
YXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURl
bGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2
YWx1ZSJfcyk7CisKKyAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZv
cm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJf
cyk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvclJhbmdlLCBtX3BsdXJhbFJ1
bGVzLmdldCgpLCByYW5nZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCA2
ZDNhY2FiODRlODE0ZTVmN2MwN2QwMjRmM2UyNWZmMmU1ZjBmNmU0Li41Zjk2NDAxOTk5MzEzNjJl
ZTU5MGYxMWFkNTdmNjZkNjRlODhkNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaApAQCAtMjgsMTEgKzI4LDI4IEBACiAKICNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+Ci0jaW5jbHVk
ZSA8dW5pY29kZS91cGx1cmFscnVsZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNV
SGVscGVycy5oPgogCisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNV
X1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUiAxCisjZW5kaWYKKyNlbmRpZgorCitzdHJ1Y3QgVVBs
dXJhbFJ1bGVzOworc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlcjsKKwogbmFtZXNwYWNlIEpT
QyB7CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKik7Cit9OworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVy
IHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9y
bWF0dGVyKik7Cit9OworI2VuZGlmCisKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkg
OiB1aW50OF90OwogCiBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CkBAIC02NCw2ICs4MSwxMCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9i
YWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEludGxQbHVyYWxSdWxlcyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKQEAgLTczLDExICs5NCwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29s
IHsgQ2FyZGluYWwsIE9yZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVwbHJ1bGVzX2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUo
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRl
ciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVy
Rm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7Cisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKyNl
bmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIHVuc2lnbmVkIG1fbWluaW11bUludGVn
ZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4
Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRiMTg2
ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5k
CiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBAQCBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2Jh
bE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBI
QVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3Jt
YXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90
b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNE
eW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90
b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxl
cyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051
bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJlcihnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2Vs
ZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgK
aW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0
ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5k
ZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3OC4uM2M0NzE5NDUzNzU3
OGFiMTE4YzYyNGQ2OWM1NTQwMjI0ZTg0MTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5oCkBAIC00NjIsNiArNDYyLDggQEAgY2xhc3MgSlNCaWdJbnQgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGhhc2hTbG93KCk7CiAgICAgfQogCisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cnlFeHRyYWN0U2FmZURvdWJsZUludGVn
ZXIoSlNWYWx1ZSBiaWdJbnRWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQoVk0mLCBT
dHJ1Y3R1cmUqLCBEaWdpdCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2NzgsMzYg
QEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50KiBi
aWdJbnQpCiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gSlNCaWdJbnQ6OnRyeUV4dHJhY3RTYWZlRG91YmxlSW50ZWdlcihKU1ZhbHVl
IGJpZ0ludFZhbHVlKQoreworICAgIEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludCgpKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAg
ICAgcmV0dXJuIGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisgICAgQVNT
RVJUKGJpZ0ludFZhbHVlLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
YmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCk7CisgICAgaWYgKCFiaWdJbnQtPmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHVpbnQ2NF90IHZhbHVlID0gMDsKKyAgICBpZiBjb25z
dGV4cHIgKHNpemVvZihEaWdpdCkgPT0gOCkgeworICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgo
KSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdmFsdWUg
PSBiaWdJbnQtPmRpZ2l0KDApOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2Yo
RGlnaXQpID09IDQpOworICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB1aW50NjRfdCB2YWx1ZSA9IGJpZ0lu
dC0+ZGlnaXQoMCk7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpID09IDIpCisgICAgICAg
ICAgICB2YWx1ZSB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpZ0ludC0+ZGlnaXQoMSkpIDw8
IDMyKTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1h
eFNhZmVJbnRlZ2VyKCkpKQorICAgICAgICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSA6IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpOworCisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjYzgwNGVl
YmZiYmZkMjlmM2M2M2NhYzQzNjZhMDYwZjZmY2I2MjEuLmUzMTkyNTFkNWM4NGNlMzQ2ZDdkY2Uz
YTFjMzQyMDU1MDlmOTNiMmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjQgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSW50bE51
bWJlckZvcm1hdCB2MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qczoKKwogMjAyMS0xMC0yMyAgUGhpbGxp
cCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHVwZGF0ZSB0ZXN0MjYyCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwppbmRleCBhNDM4ZWFjZTFkNjY0N2EwOWQ0MTY1NjI2
NzEyMWNjZDQ4NTA1ZTA3Li5kMzI3NzNlMmFlNmY3NDc1Nzg0ZTdkYWQyMjA0NzYxNzhjMmMzN2Zm
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKQEAgLTI5NCwzICsyOTQsOCBAQCBmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKIHNob3VsZEJlKG5ldyBJbnRsLlBs
dXJhbFJ1bGVzKCdhcicpLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigp
LCAnZmV3LG1hbnksb25lLHR3byx6ZXJvLG90aGVyJyk7CiBzaG91bGRCZShuZXcgSW50bC5QbHVy
YWxSdWxlcygnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmpvaW4oKSwg
J29uZSxvdGhlcicpOwogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2VuJywge3R5cGU6
ICdvcmRpbmFsJ30pLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigpLCAn
ZmV3LG9uZSx0d28sb3RoZXInKTsKKworaWYgKEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNl
bGVjdFJhbmdlKSB7CisgICAgY29uc3QgcGwgPSBuZXcgSW50bC5QbHVyYWxSdWxlcygic2wiKTsK
KyAgICBzaG91bGRCZShwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSksIGBmZXdgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442302</attachid>
            <date>2021-10-24 04:14:00 -0700</date>
            <delta_ts>2021-10-24 04:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024041359.patch</filename>
            <type>text/plain</type>
            <size>59828</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5lY2VjNzgyZjI4ODRjMzZl
NDYxZjQyOWRiYjYzMWU1YjhmZWQxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OlVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlFeHRyYWN0
U2FmZURvdWJsZUludGVnZXIpOgorCiAyMDIxLTEwLTIyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbml0cyBmcm9tIDIzMjAxOQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGYzYTYxODZmNjNmODM0NDJkZjE3Y2UyOTM0
MjA0Mjg5M2YyYmRmLi44NDA3MmE4ODM1ODRjYjc3NGY3YTkxZTQyMjliZGQyM2VhYzhjYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2ICsxODQ1LDcgQEAKIAkJRTMw
NzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJCUUzMDcxNzhEMjRDNzgyOUEw
MERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRs
TG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8q
IEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CisJCUUz
MDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOEYyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUzMEU4QTU0MjZERTJFNDgwMERB
NDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBFOEE1NjI2REUyRTQ4MDBEQTQ5
MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oICovOyB9OwpAQCAtMTE4MzQsNiArMTE4MzUsNyBAQAogCQkJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3
NkYgLyogSW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uYzIyMTY3NGJjNmMzMDk1
YjY2OTJhMjAzMzU5ZThmNTNjMWNkYTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODQwLDcgKzg0MCw3IEBAIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZp
bmUgVV9ISURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5jMWEyOTE0YzY2NmJhZjAxNTNkYThjZGM3MTAzY2VlNGI1NWNlOWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0zOTEsMjcg
KzQ3MSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKLSAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsr
aSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYnJl
YWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgeworICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsKKyAgICAgICAgYXV0byBz
dHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgMTA+PihtX3JvdW5k
aW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID49IHN0
cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIjAuIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5nLnNpemUoKSAtIG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKG1fcm91
bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdp
dHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1G
cmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0
czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9i
bG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMu
bWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7
ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNp
c2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2Fz
IENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5n
LgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4LCB3ZSBkbyBub3RoaW5n
LgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3Vz
ZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJlY2lzaW9uCisgICAg
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0
cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5k
aW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKLSAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJn
dWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRz
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24u
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9j
cy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXpl
cm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2Fz
ZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0gICAgICAgIC8vIERvIG5v
dCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50
ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNw
bGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0
LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9i
NzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6
OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ2MiwxMCArNTg4LDM0
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5
fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBs
aW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZk
YWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkg
eworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2ZSIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5l
Z2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFt
X3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWlu
dGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJl
cnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7Cisg
ICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIg
Z3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJ
bnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2
NzksNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5l
dmVyOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5
OjpFeGNlcHRaZXJvOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAv
LyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4K
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTU5LDExICs3MTAsMjcgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5n
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8g
SWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoK
KyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAobV91c2VHcm91
cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CiAgICAgICAgIC8v
IElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0Lgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9S
T1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC03MjcsMTEgKzg5NCw4MSBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRp
c3BsYXkpCiAgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6
OkV4Y2VwdFplcm86CiAgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAgcmV0dXJuICJuZWdhdGl2ZSJfczsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3Ry
aW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ01v
ZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWls
Il9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9v
ciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4
cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAi
dHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1
cm4gImhhbGZDZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAg
ICAgIHJldHVybiAiaGFsZkZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kOgorICAgICAgICByZXR1cm4gImhhbGZFeHBhbmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgcmV0dXJuICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFdmVuOgorICAgICAgICByZXR1cm4gImhhbGZFdmVuIl9zOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9E
aXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFRyYWls
aW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICByZXR1cm4gInN0cmlwSWZJ
bnRlZ2VyIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQor
eworICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50
RGlnaXRzOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4g
Imxlc3NQcmVjaXNpb24iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7
CisgICAgc3dpdGNoICh1c2VHcm91cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNl
OgorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5n
OjpNaW4yOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7
CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2Jq
ZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTc2NCwxNCArMTAwMSwyMyBAQCBKU09iamVjdCogSW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpD
b21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdp
dHMsIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBq
c051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNO
dW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpz
TnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiks
IHVzZUdyb3VwaW5nVmFsdWUodm0sIG1fdXNlR3JvdXBpbmcpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CiAgICAgaWYgKG1f
bm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQogICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERpc3Bs
YXkpKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxheVN0
cmluZyhtX3NpZ25EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5n
TW9kZVN0cmluZyhtX3JvdW5kaW5nTW9kZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCBqc051bWJlcihtX3JvdW5kaW5n
SW5jcmVtZW50KSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50cmFpbGluZ1plcm9EaXNwbGF5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcobV90cmFpbGluZ1plcm9EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdQcmlvcml0eSwganNOb250cml2
aWFsU3RyaW5nKHZtLCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwog
ICAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3Njlh
OTE0OWRiY2E4NTdkZS4uYjRhY2ZmZGY5Y2QyNmUwM2MxYTQ2OTFiMDQxODNjNmY5N2YwNmMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
aApAQCAtNDgsNyArNDgsOCBAQCBjbGFzcyBJbnRsRmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91
bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90Owog
Ci1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJv
dW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMs
IE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24gfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5n
UHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9
OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlm
aWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4g
dm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlw
ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKIApAQCAt
OTQsNiArOTUsOCBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIHVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUpOworCiBwcml2
YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMTA4LDEwIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBD
dXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBlbnVt
IGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKICAg
ICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07Ci0g
ICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlz
LCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBB
dXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0gY2xh
c3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9
OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1
dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7IENl
aWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhwYW5k
LCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxl
U3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDYgKzExOSw5IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJv
RGlzcGxheSk7CisgICAgc3RhdGljIEpTVmFsdWUgdXNlR3JvdXBpbmdWYWx1ZShWTSYsIFVzZUdy
b3VwaW5nKTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3Jt
YXQ7CiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQpAQCAtMTMzLDYgKzE0Miw3IEBA
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CiAgICAgdW5zaWdu
ZWQgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9yb3VuZGluZ0luY3Jl
bWVudCB7IDEgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBD
dXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CiAgICAgQ3VycmVuY3lTaWduIG1fY3Vy
cmVuY3lTaWduOwpAQCAtMTQwLDcgKzE1MCw5IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgQ29tcGFjdERpc3BsYXkgbV9jb21w
YWN0RGlzcGxheTsKICAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6
U3RhbmRhcmQgfTsKICAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwotICAgIGJvb2wgbV91
c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBUcmFpbGluZ1plcm9EaXNwbGF5IG1fdHJhaWxpbmda
ZXJvRGlzcGxheSB7IFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG8gfTsKKyAgICBVc2VHcm91cGlu
ZyBtX3VzZUdyb3VwaW5nIHsgVXNlR3JvdXBpbmc6OkFsd2F5cyB9OworICAgIFJvdW5kaW5nTW9k
ZSBtX3JvdW5kaW5nTW9kZSB7IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9OwogICAgIEludGxS
b3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0cyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKaW5kZXggMjNkMzg2M2QxNjAwNDMxZWY3NGRmNDBj
ODc0NDcxNzY2ZDA1MTY5YS4uZjQ0ZTE3M2E4ZmU3NTNmODhmODJkZTJlOTQ3MzI5NmIzNWIxNWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0SW5saW5lcy5oCkBAIC02MSw0NyArNjEsNjkgQEAgdm9pZCBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGlu
dGxJbnMKIAogICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmlt
dW1JbnRlZ2VyRGlnaXRzOwogCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91
bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEludGxSb3VuZGluZ1ByaW9y
aXR5IHJvdW5kaW5nUHJpb3JpdHkgPSBpbnRsT3B0aW9uPEludGxSb3VuZGluZ1ByaW9yaXR5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHks
IHsgeyAiYXV0byJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8gfSwgeyAibW9yZVByZWNp
c2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24gfSwgeyAibGVzc1By
ZWNpc2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24gfSB9LCAicm91
bmRpbmdQcmlvcml0eSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwgXCJtb3JlUHJlY2lzaW9uXCIs
IG9yIFwibGVzc1ByZWNpc2lvblwiIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0byk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGlmICghbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5k
ZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHVuc2ln
bmVkIHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWdu
ZWQgc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlO
YW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoc3Bl
Y2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzICE9IHVuZGVmaW5lZFZhbHVlKQotICAgICAgICAg
ICAgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWluKG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgICAg
IHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmlu
ZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDoganNOdW1iZXIoc3BlY2lmaWVkTWluaW11bUZyYWN0
aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAy
MCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDog
anNOdW1iZXIoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1l
cy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
IGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRpZ2l0cyJfcyk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgYm9vbCBoYXNTZCA9ICFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5p
c1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpOworICAgIGJvb2wgaGFzRmQgPSAhbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAg
ICBib29sIG5lZWRTZCA9IGhhc1NkIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5n
UHJpb3JpdHk6OkF1dG87CisgICAgYm9vbCBuZWVkRmQgPSAoIWhhc1NkICYmIG5vdGF0aW9uICE9
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRp
bmdQcmlvcml0eTo6QXV0bzsKKworICAgIGlmIChuZWVkU2QpIHsKKyAgICAgICAgaWYgKGhhc1Nk
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIx
LCAxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVs
dE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5t
X21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDIxOwogICAgICAgICB9Ci0gICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7
Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobm90YXRp
b24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7Ci0gICAgICAg
IHJldHVybjsKKyAgICBpZiAobmVlZEZkKSB7CisgICAgICAgIGlmIChoYXNGZCkgeworICAgICAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVl
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQorICAg
ICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWluKG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAgICBl
bHNlIGlmIChtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAg
ICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgeworICAg
ICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0
ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzIGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0OworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNl
LT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7
CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAgaWYgKHJvdW5kaW5nUHJpb3Jp
dHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24pCisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNp
c2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQ
cmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOworICAgICAgICBlbHNl
IGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJ
bnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKKyAgICB9CiB9CiAKIGNsYXNzIEludGxGaWVs
ZEl0ZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZGVmMDI5YjE0ZGQzYjllZWJi
YWE2NDM5YzRlMGI0ZjNhNDZiZTcyOC4uYmQ0ZDFjYTMzY2YxMjE2MGE5MGIyMTE1Nzg0YmY0NjAz
MWJlNTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTg5LDIzICs4OSwxOCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogICAgIEpTVmFsdWUgYmlnSW50T3JOdW1iZXIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwogICAgIGlmIChiaWdJbnRPck51bWJlci5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzTnVtYmVyKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAg
IH0KLQotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQz
MigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGds
b2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIHZhbHVlKSkpOwogICAgIH0KLSNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVy
LmlzQmlnSW50KCkpOworICAgIGlmIChhdXRvIHZhbHVlID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3RT
YWZlRG91YmxlSW50ZWdlcihiaWdJbnRPck51bWJlcikpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9i
amVjdCwgdmFsdWUudmFsdWUoKSkpKTsKIAogICAgIEFTU0VSVChiaWdJbnRPck51bWJlci5pc0hl
YXBCaWdJbnQoKSk7CiAgICAgSlNCaWdJbnQqIHZhbHVlID0gYmlnSW50T3JOdW1iZXIuYXNIZWFw
QmlnSW50KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkp
KTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFm
NWE4NGMwMTk2ZThmNDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2Vh
YjMwYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4K
ICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+
CitSZXN1bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVz
dWx0VHlwZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXpl
cl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJ
TGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlh
dGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJU
KHZhbHVlcy5zaXplKCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9w
dGlvbnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBv
cHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFs
dWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc3lWYWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBu
b3RGb3VuZE1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsbGJhY2s7Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VU
Q29tcGFyaXNvbihVQ2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlh
ZTQ1NGQ2MmJmYzNkMjhhMzVlNDg5Li5kNDVhOTRjMTgwYjcyYmYyNGUxMWJlNWE5Y2FiZTcxNWJk
NTMxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAKQEAgLTMyLDggKzMyLDMxIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjdW5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1
cmFscnVsZXMuaD4KKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5j
bHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBV
X0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlm
IChwbHVyYWxSdWxlcykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciogZm9y
bWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShmb3Jt
YXR0ZXIpOworfQorI2VuZGlmCisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25E
ZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTMwLDc4IEBAIHZv
aWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGds
b2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9j
YWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAw
LCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxk
ZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7
CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVy
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2Vy
LXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNV
IDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3Np
Z25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0An
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1h
dCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmln
dXJlIGFueXRoaW5nLgorICAgICAgICAvLyBTbywgaWYgbGlua2VkIElDVSBpcyB+NjgsIHdlIGRv
IG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNwcmVjaXNpb24KKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlv
bkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAt
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3In
IDogJ3MnKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNr
ZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmll
dy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2U+Pih1
bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9u
Vmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0
dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9u
V2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0
b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlf
RkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUsMTMgKzIxOCwxMyBAQCB2b2lkIEludGxQ
bHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsK
ICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJh
bFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRl
cj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09
IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJE
SU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2Nh
bGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFM
IDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTE1OSw4ICsyNTIsMTIgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5p
bXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODMsOCArMjgw
LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
b3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5LDEyICsyOTcsNTcgQEAgSlNWYWx1ZSBJ
bnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90
aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VS
ZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERv
dWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwg
bV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7Cisg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3Rv
cjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0
V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0
KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1
cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgor
fQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRs
UGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5n
ZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5k
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQg
aXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAg
IHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBz
dGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdl
LmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0
IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVy
KSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3
YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjVmOTY0MDE5OTkzMTM2MmVlNTkwZjExYWQ1N2Y2NmQ2
NGU4OGQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMjggQEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVy
YWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKKyNp
ZiAhZGVmaW5lZChIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1Vf
VkVSU0lPTl9NQUpPUl9OVU0gPj0gNjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSIDEKKyNlbmRpZgorI2VuZGlmCisKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CitzdHJ1
Y3QgVU51bWJlclJhbmdlRm9ybWF0dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RydWN0IFVQ
bHVyYWxSdWxlc0RlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3Io
KShVUGx1cmFsUnVsZXMqKTsKK307CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqKTsKK307Cisj
ZW5kaWYKKwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAg
LTY0LDYgKzgxLDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVz
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMs
MTEgKzk0LDE4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3Jk
aW5hbCB9OwogCi0gICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBs
cnVsZXNfY2xvc2U+OwogICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVy
YWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9S
TUFUVEVSKQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtZl9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1i
ZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZv
cm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJSYW5nZUZvcm1h
dHRlcjsKKyNlbmRpZgorI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwg
VU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJp
bmcgbV9sb2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuY3BwCmluZGV4IGM4MGJmYTIyMjNmZDUwZThiOTc4MThjZWQ0YjA3NThi
YmNkZTZjMjcuLmVjNjlmZTI5YmIyMzk4MGM2NDdiYTRhZjA2NGIxODY4NzE2YTlhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3RSYW5nZSk7CisjZW5kaWYKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogCiB9CkBAIC01MCwx
MCArNTMsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiSW50bC5QbHVyYWxSdWxlcyIsICZCYXNlOjoKIEBlbmQKICovCiAKLUludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIApAQCAtNjcsMTEgKzcwLDE1IEBAIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit2b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5z
ZWxlY3RSYW5nZSwgaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CisjZW5k
aWYKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC05Miw2ICs5OSwyNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5z
ZWxlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvcGx1cmFs
cnVsZXMvZGlmZi5odG1sI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3RyYW5n
ZQorICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQ
bHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsdXJh
bFJ1bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5n
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisKKyAgICBk
b3VibGUgc3RhcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBl
bmQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3RSYW5nZShnbG9iYWxP
YmplY3QsIHN0YXJ0LCBlbmQpKSk7Cit9CisjZW5kaWYKKwogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAppbmRleCA2ZmFhM2E0Zjc4
YWVhNTk4NDMyY2IxMzAzN2YxMDM1OTM2MjUwODRiLi42MWUwOGIyZjRkMmNhYjA2M2M3NWM2OTc2
YzFiMzYwZmFmZTVmZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEw
MWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li4zYzQ3MTk0NTM3NTc4YWIxMThjNjI0ZDY5YzU1
NDAyMjRlODQxNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
QEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gaGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3RTYWZlRG91YmxlSW50ZWdlcihKU1ZhbHVlIGJpZ0lu
dFZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIERpZ2l0
KiwgdW5zaWduZWQgbGVuZ3RoKTsKIApAQCAtNjc2LDQgKzY3OCwzNiBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgdHJ5Q29udmVydFRvQmlnSW50MzIoSlNCaWdJbnQqIGJpZ0ludCkKICAgICByZXR1
cm4gYmlnSW50OwogfQogCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBKU0Jp
Z0ludDo6dHJ5RXh0cmFjdFNhZmVEb3VibGVJbnRlZ2VyKEpTVmFsdWUgYmlnSW50VmFsdWUpCit7
CisgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gYmlnSW50
VmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKKyAgICBBU1NFUlQoYmlnSW50VmFsdWUu
aXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBiaWdJbnRWYWx1ZS5hc0hl
YXBCaWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdWludDY0X3QgdmFsdWUgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERp
Z2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2YWx1ZSA9IGJpZ0ludC0+ZGlnaXQo
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7Cisg
ICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpID4gMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHVpbnQ2NF90IHZhbHVlID0gYmlnSW50LT5kaWdpdCgwKTsKKyAg
ICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIHZhbHVlIHw9IChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKwor
ICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkp
CisgICAgICAgIHJldHVybiAoYmlnSW50LT5zaWduKCkpID8gLXN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWUpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7CisKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYzY2Fj
NDM2NmEwNjBmNmZjYjYyMS4uZTMxOTI1MWQ1Yzg0Y2UzNDZkN2RjZTNhMWMzNDIwNTUwOWY5M2Iy
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9p
bnRsLXBsdXJhbHJ1bGVzLmpzOgorCiAyMDIxLTEwLTIzICBQaGlsbGlwIE1hdGVzICA8cG1hdGVz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgdXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJh
bHJ1bGVzLmpzCmluZGV4IGE0MzhlYWNlMWQ2NjQ3YTA5ZDQxNjU2MjY3MTIxY2NkNDg1MDVlMDcu
LmQzMjc3M2UyYWU2Zjc0NzU3ODRlN2RhZDIyMDQ3NjE3OGMyYzM3ZmYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1wbHVyYWxydWxlcy5qcwpAQCAtMjk0LDMgKzI5NCw4IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yVHlwZSkgewogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2FyJyku
cmVzb2x2ZWRPcHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5qb2luKCksICdmZXcsbWFueSxvbmUs
dHdvLHplcm8sb3RoZXInKTsKIHNob3VsZEJlKG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCdlbicpLnJl
c29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigpLCAnb25lLG90aGVyJyk7CiBz
aG91bGRCZShuZXcgSW50bC5QbHVyYWxSdWxlcygnZW4nLCB7dHlwZTogJ29yZGluYWwnfSkucmVz
b2x2ZWRPcHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5qb2luKCksICdmZXcsb25lLHR3byxvdGhl
cicpOworCitpZiAoSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAg
ICBjb25zdCBwbCA9IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCJzbCIpOworICAgIHNob3VsZEJlKHBs
LnNlbGVjdFJhbmdlKDEwMiwgMjAxKSwgYGZld2ApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442304</attachid>
            <date>2021-10-24 04:21:41 -0700</date>
            <delta_ts>2021-10-24 04:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024042141.patch</filename>
            <type>text/plain</type>
            <size>62808</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5lY2VjNzgyZjI4ODRjMzZl
NDYxZjQyOWRiYjYzMWU1YjhmZWQxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OlVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlFeHRyYWN0
U2FmZURvdWJsZUludGVnZXIpOgorCiAyMDIxLTEwLTIyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbml0cyBmcm9tIDIzMjAxOQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGYzYTYxODZmNjNmODM0NDJkZjE3Y2UyOTM0
MjA0Mjg5M2YyYmRmLi44NDA3MmE4ODM1ODRjYjc3NGY3YTkxZTQyMjliZGQyM2VhYzhjYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2ICsxODQ1LDcgQEAKIAkJRTMw
NzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJCUUzMDcxNzhEMjRDNzgyOUEw
MERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRs
TG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8q
IEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CisJCUUz
MDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOEYyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUzMEU4QTU0MjZERTJFNDgwMERB
NDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBFOEE1NjI2REUyRTQ4MDBEQTQ5
MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oICovOyB9OwpAQCAtMTE4MzQsNiArMTE4MzUsNyBAQAogCQkJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3
NkYgLyogSW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uYzIyMTY3NGJjNmMzMDk1
YjY2OTJhMjAzMzU5ZThmNTNjMWNkYTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODQwLDcgKzg0MCw3IEBAIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZp
bmUgVV9ISURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5jMWEyOTE0YzY2NmJhZjAxNTNkYThjZGM3MTAzY2VlNGI1NWNlOWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0zOTEsMjcg
KzQ3MSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKLSAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsr
aSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYnJl
YWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgeworICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsKKyAgICAgICAgYXV0byBz
dHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgMTA+PihtX3JvdW5k
aW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID49IHN0
cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIjAuIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5nLnNpemUoKSAtIG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKG1fcm91
bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdp
dHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1G
cmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0
czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9i
bG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMu
bWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7
ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNp
c2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2Fz
IENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5n
LgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4LCB3ZSBkbyBub3RoaW5n
LgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3Vz
ZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJlY2lzaW9uCisgICAg
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0
cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5k
aW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKLSAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJn
dWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRz
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24u
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9j
cy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXpl
cm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2Fz
ZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0gICAgICAgIC8vIERvIG5v
dCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50
ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNw
bGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0
LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9i
NzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6
OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ2MiwxMCArNTg4LDM0
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5
fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBs
aW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZk
YWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkg
eworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2ZSIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5l
Z2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFt
X3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWlu
dGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJl
cnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7Cisg
ICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIg
Z3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJ
bnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2
NzksNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5l
dmVyOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5
OjpFeGNlcHRaZXJvOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAv
LyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4K
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTU5LDExICs3MTAsMjcgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5n
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8g
SWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoK
KyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAobV91c2VHcm91
cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CiAgICAgICAgIC8v
IElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0Lgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9S
T1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC03MjcsMTEgKzg5NCw4MSBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRp
c3BsYXkpCiAgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6
OkV4Y2VwdFplcm86CiAgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAgcmV0dXJuICJuZWdhdGl2ZSJfczsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3Ry
aW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ01v
ZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWls
Il9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9v
ciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4
cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAi
dHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1
cm4gImhhbGZDZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAg
ICAgIHJldHVybiAiaGFsZkZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kOgorICAgICAgICByZXR1cm4gImhhbGZFeHBhbmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgcmV0dXJuICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFdmVuOgorICAgICAgICByZXR1cm4gImhhbGZFdmVuIl9zOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9E
aXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFRyYWls
aW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICByZXR1cm4gInN0cmlwSWZJ
bnRlZ2VyIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQor
eworICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50
RGlnaXRzOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4g
Imxlc3NQcmVjaXNpb24iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7
CisgICAgc3dpdGNoICh1c2VHcm91cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNl
OgorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5n
OjpNaW4yOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7
CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2Jq
ZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTc2NCwxNCArMTAwMSwyMyBAQCBKU09iamVjdCogSW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpD
b21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdp
dHMsIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBq
c051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNO
dW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpz
TnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiks
IHVzZUdyb3VwaW5nVmFsdWUodm0sIG1fdXNlR3JvdXBpbmcpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CiAgICAgaWYgKG1f
bm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQogICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERpc3Bs
YXkpKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxheVN0
cmluZyhtX3NpZ25EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5n
TW9kZVN0cmluZyhtX3JvdW5kaW5nTW9kZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCBqc051bWJlcihtX3JvdW5kaW5n
SW5jcmVtZW50KSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50cmFpbGluZ1plcm9EaXNwbGF5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcobV90cmFpbGluZ1plcm9EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdQcmlvcml0eSwganNOb250cml2
aWFsU3RyaW5nKHZtLCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwog
ICAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3Njlh
OTE0OWRiY2E4NTdkZS4uYjRhY2ZmZGY5Y2QyNmUwM2MxYTQ2OTFiMDQxODNjNmY5N2YwNmMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
aApAQCAtNDgsNyArNDgsOCBAQCBjbGFzcyBJbnRsRmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91
bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90Owog
Ci1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJv
dW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMs
IE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24gfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5n
UHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9
OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlm
aWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4g
dm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlw
ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKIApAQCAt
OTQsNiArOTUsOCBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIHVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUpOworCiBwcml2
YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMTA4LDEwIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBD
dXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBlbnVt
IGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKICAg
ICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07Ci0g
ICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlz
LCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBB
dXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0gY2xh
c3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9
OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1
dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7IENl
aWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhwYW5k
LCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxl
U3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDYgKzExOSw5IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJv
RGlzcGxheSk7CisgICAgc3RhdGljIEpTVmFsdWUgdXNlR3JvdXBpbmdWYWx1ZShWTSYsIFVzZUdy
b3VwaW5nKTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3Jt
YXQ7CiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQpAQCAtMTMzLDYgKzE0Miw3IEBA
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CiAgICAgdW5zaWdu
ZWQgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9yb3VuZGluZ0luY3Jl
bWVudCB7IDEgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBD
dXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CiAgICAgQ3VycmVuY3lTaWduIG1fY3Vy
cmVuY3lTaWduOwpAQCAtMTQwLDcgKzE1MCw5IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgQ29tcGFjdERpc3BsYXkgbV9jb21w
YWN0RGlzcGxheTsKICAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6
U3RhbmRhcmQgfTsKICAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwotICAgIGJvb2wgbV91
c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBUcmFpbGluZ1plcm9EaXNwbGF5IG1fdHJhaWxpbmda
ZXJvRGlzcGxheSB7IFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG8gfTsKKyAgICBVc2VHcm91cGlu
ZyBtX3VzZUdyb3VwaW5nIHsgVXNlR3JvdXBpbmc6OkFsd2F5cyB9OworICAgIFJvdW5kaW5nTW9k
ZSBtX3JvdW5kaW5nTW9kZSB7IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9OwogICAgIEludGxS
b3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0cyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKaW5kZXggMjNkMzg2M2QxNjAwNDMxZWY3NGRmNDBj
ODc0NDcxNzY2ZDA1MTY5YS4uZjQ0ZTE3M2E4ZmU3NTNmODhmODJkZTJlOTQ3MzI5NmIzNWIxNWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0SW5saW5lcy5oCkBAIC02MSw0NyArNjEsNjkgQEAgdm9pZCBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGlu
dGxJbnMKIAogICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmlt
dW1JbnRlZ2VyRGlnaXRzOwogCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91
bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEludGxSb3VuZGluZ1ByaW9y
aXR5IHJvdW5kaW5nUHJpb3JpdHkgPSBpbnRsT3B0aW9uPEludGxSb3VuZGluZ1ByaW9yaXR5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHks
IHsgeyAiYXV0byJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8gfSwgeyAibW9yZVByZWNp
c2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24gfSwgeyAibGVzc1By
ZWNpc2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24gfSB9LCAicm91
bmRpbmdQcmlvcml0eSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwgXCJtb3JlUHJlY2lzaW9uXCIs
IG9yIFwibGVzc1ByZWNpc2lvblwiIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0byk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGlmICghbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5k
ZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHVuc2ln
bmVkIHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWdu
ZWQgc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlO
YW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoc3Bl
Y2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzICE9IHVuZGVmaW5lZFZhbHVlKQotICAgICAgICAg
ICAgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWluKG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgICAg
IHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmlu
ZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDoganNOdW1iZXIoc3BlY2lmaWVkTWluaW11bUZyYWN0
aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAy
MCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDog
anNOdW1iZXIoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1l
cy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
IGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRpZ2l0cyJfcyk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgYm9vbCBoYXNTZCA9ICFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5p
c1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpOworICAgIGJvb2wgaGFzRmQgPSAhbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAg
ICBib29sIG5lZWRTZCA9IGhhc1NkIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5n
UHJpb3JpdHk6OkF1dG87CisgICAgYm9vbCBuZWVkRmQgPSAoIWhhc1NkICYmIG5vdGF0aW9uICE9
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRp
bmdQcmlvcml0eTo6QXV0bzsKKworICAgIGlmIChuZWVkU2QpIHsKKyAgICAgICAgaWYgKGhhc1Nk
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIx
LCAxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVs
dE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5t
X21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDIxOwogICAgICAgICB9Ci0gICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7
Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobm90YXRp
b24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7Ci0gICAgICAg
IHJldHVybjsKKyAgICBpZiAobmVlZEZkKSB7CisgICAgICAgIGlmIChoYXNGZCkgeworICAgICAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVl
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQorICAg
ICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWluKG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAgICBl
bHNlIGlmIChtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAg
ICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgeworICAg
ICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0
ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzIGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0OworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNl
LT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7
CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAgaWYgKHJvdW5kaW5nUHJpb3Jp
dHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24pCisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNp
c2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQ
cmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOworICAgICAgICBlbHNl
IGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJ
bnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKKyAgICB9CiB9CiAKIGNsYXNzIEludGxGaWVs
ZEl0ZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZGVmMDI5YjE0ZGQzYjllZWJi
YWE2NDM5YzRlMGI0ZjNhNDZiZTcyOC4uYmQ0ZDFjYTMzY2YxMjE2MGE5MGIyMTE1Nzg0YmY0NjAz
MWJlNTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTg5LDIzICs4OSwxOCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogICAgIEpTVmFsdWUgYmlnSW50T3JOdW1iZXIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwogICAgIGlmIChiaWdJbnRPck51bWJlci5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzTnVtYmVyKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAg
IH0KLQotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQz
MigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGds
b2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIHZhbHVlKSkpOwogICAgIH0KLSNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVy
LmlzQmlnSW50KCkpOworICAgIGlmIChhdXRvIHZhbHVlID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3RT
YWZlRG91YmxlSW50ZWdlcihiaWdJbnRPck51bWJlcikpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9i
amVjdCwgdmFsdWUudmFsdWUoKSkpKTsKIAogICAgIEFTU0VSVChiaWdJbnRPck51bWJlci5pc0hl
YXBCaWdJbnQoKSk7CiAgICAgSlNCaWdJbnQqIHZhbHVlID0gYmlnSW50T3JOdW1iZXIuYXNIZWFw
QmlnSW50KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkp
KTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFm
NWE4NGMwMTk2ZThmNDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2Vh
YjMwYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4K
ICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+
CitSZXN1bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVz
dWx0VHlwZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXpl
cl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJ
TGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlh
dGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJU
KHZhbHVlcy5zaXplKCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9w
dGlvbnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBv
cHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFs
dWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc3lWYWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBu
b3RGb3VuZE1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsbGJhY2s7Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VU
Q29tcGFyaXNvbihVQ2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlh
ZTQ1NGQ2MmJmYzNkMjhhMzVlNDg5Li5kNDVhOTRjMTgwYjcyYmYyNGUxMWJlNWE5Y2FiZTcxNWJk
NTMxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAKQEAgLTMyLDggKzMyLDMxIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjdW5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1
cmFscnVsZXMuaD4KKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5j
bHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBV
X0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlm
IChwbHVyYWxSdWxlcykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciogZm9y
bWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShmb3Jt
YXR0ZXIpOworfQorI2VuZGlmCisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25E
ZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTMwLDc4IEBAIHZv
aWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGds
b2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9j
YWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAw
LCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxk
ZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7
CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVy
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2Vy
LXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNV
IDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3Np
Z25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0An
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1h
dCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmln
dXJlIGFueXRoaW5nLgorICAgICAgICAvLyBTbywgaWYgbGlua2VkIElDVSBpcyB+NjgsIHdlIGRv
IG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNwcmVjaXNpb24KKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlv
bkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAt
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3In
IDogJ3MnKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNr
ZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmll
dy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2U+Pih1
bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9u
Vmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0
dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9u
V2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0
b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlf
RkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUsMTMgKzIxOCwxMyBAQCB2b2lkIEludGxQ
bHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsK
ICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJh
bFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRl
cj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09
IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJE
SU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2Nh
bGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFM
IDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTE1OSw4ICsyNTIsMTIgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5p
bXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODMsOCArMjgw
LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
b3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5LDEyICsyOTcsNTcgQEAgSlNWYWx1ZSBJ
bnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90
aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VS
ZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERv
dWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwg
bV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7Cisg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3Rv
cjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0
V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0
KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1
cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgor
fQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRs
UGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5n
ZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5k
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQg
aXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAg
IHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBz
dGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdl
LmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0
IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVy
KSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3
YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjVmOTY0MDE5OTkzMTM2MmVlNTkwZjExYWQ1N2Y2NmQ2
NGU4OGQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMjggQEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVy
YWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKKyNp
ZiAhZGVmaW5lZChIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1Vf
VkVSU0lPTl9NQUpPUl9OVU0gPj0gNjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSIDEKKyNlbmRpZgorI2VuZGlmCisKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CitzdHJ1
Y3QgVU51bWJlclJhbmdlRm9ybWF0dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RydWN0IFVQ
bHVyYWxSdWxlc0RlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3Io
KShVUGx1cmFsUnVsZXMqKTsKK307CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqKTsKK307Cisj
ZW5kaWYKKwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAg
LTY0LDYgKzgxLDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVz
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMs
MTEgKzk0LDE4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3Jk
aW5hbCB9OwogCi0gICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBs
cnVsZXNfY2xvc2U+OwogICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVy
YWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9S
TUFUVEVSKQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtZl9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1i
ZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZv
cm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJSYW5nZUZvcm1h
dHRlcjsKKyNlbmRpZgorI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwg
VU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJp
bmcgbV9sb2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuY3BwCmluZGV4IGM4MGJmYTIyMjNmZDUwZThiOTc4MThjZWQ0YjA3NThi
YmNkZTZjMjcuLmVjNjlmZTI5YmIyMzk4MGM2NDdiYTRhZjA2NGIxODY4NzE2YTlhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3RSYW5nZSk7CisjZW5kaWYKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogCiB9CkBAIC01MCwx
MCArNTMsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiSW50bC5QbHVyYWxSdWxlcyIsICZCYXNlOjoKIEBlbmQKICovCiAKLUludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIApAQCAtNjcsMTEgKzcwLDE1IEBAIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit2b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5z
ZWxlY3RSYW5nZSwgaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CisjZW5k
aWYKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC05Miw2ICs5OSwyNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5z
ZWxlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvcGx1cmFs
cnVsZXMvZGlmZi5odG1sI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3RyYW5n
ZQorICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQ
bHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsdXJh
bFJ1bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5n
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisKKyAgICBk
b3VibGUgc3RhcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBl
bmQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3RSYW5nZShnbG9iYWxP
YmplY3QsIHN0YXJ0LCBlbmQpKSk7Cit9CisjZW5kaWYKKwogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAppbmRleCA2ZmFhM2E0Zjc4
YWVhNTk4NDMyY2IxMzAzN2YxMDM1OTM2MjUwODRiLi42MWUwOGIyZjRkMmNhYjA2M2M3NWM2OTc2
YzFiMzYwZmFmZTVmZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEw
MWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li4zYzQ3MTk0NTM3NTc4YWIxMThjNjI0ZDY5YzU1
NDAyMjRlODQxNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
QEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gaGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3RTYWZlRG91YmxlSW50ZWdlcihKU1ZhbHVlIGJpZ0lu
dFZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIERpZ2l0
KiwgdW5zaWduZWQgbGVuZ3RoKTsKIApAQCAtNjc2LDQgKzY3OCwzNiBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgdHJ5Q29udmVydFRvQmlnSW50MzIoSlNCaWdJbnQqIGJpZ0ludCkKICAgICByZXR1
cm4gYmlnSW50OwogfQogCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBKU0Jp
Z0ludDo6dHJ5RXh0cmFjdFNhZmVEb3VibGVJbnRlZ2VyKEpTVmFsdWUgYmlnSW50VmFsdWUpCit7
CisgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gYmlnSW50
VmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKKyAgICBBU1NFUlQoYmlnSW50VmFsdWUu
aXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBiaWdJbnRWYWx1ZS5hc0hl
YXBCaWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdWludDY0X3QgdmFsdWUgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERp
Z2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2YWx1ZSA9IGJpZ0ludC0+ZGlnaXQo
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7Cisg
ICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpID4gMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHVpbnQ2NF90IHZhbHVlID0gYmlnSW50LT5kaWdpdCgwKTsKKyAg
ICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIHZhbHVlIHw9IChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKwor
ICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkp
CisgICAgICAgIHJldHVybiAoYmlnSW50LT5zaWduKCkpID8gLXN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWUpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7CisKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYzY2Fj
NDM2NmEwNjBmNmZjYjYyMS4uNDkxMzMyMGYwZjBjYmE2NjhiYjBkOTQ2NzE4NzRlYmIxY2I1MGQ3
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAg
ICAoc2hvdWxkQmUudGVzdE51bWJlckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6CisgICAgICAg
ICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanM6CisKIDIwMjEtMTAtMjMgIFBoaWxsaXAgTWF0
ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICB1cGRhdGUgdGVzdDI2MgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThh
NWU1MzEwMjY0YmM1Li4zZTgyYzVlZTljNzBiNDUyYjExNTg3NTJiMzU4YmU1Y2VlM2UyNjlhIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsMTQgKzUzLDE5IEBAIGZ1bmN0
aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7
CiAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDMsCiAgICAgICAgICAgICBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAotICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRydWUs
CisgICAgICAgICAgICB1c2VHcm91cGluZzogImF1dG8iLAogICAgICAgICAgICAgbm90YXRpb246
ICJzdGFuZGFyZCIsCi0gICAgICAgICAgICBzaWduRGlzcGxheTogImF1dG8iCisgICAgICAgICAg
ICBzaWduRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91bmRpbmdNb2RlOiAiaGFsZkV4
cGFuZCIsCisgICAgICAgICAgICByb3VuZGluZ0luY3JlbWVudDogMSwKKyAgICAgICAgICAgIHRy
YWlsaW5nWmVyb0Rpc3BsYXk6ICJhdXRvIiwKKyAgICAgICAgICAgIHJvdW5kaW5nUHJpb3JpdHk6
ICJhdXRvIiwKICAgICAgICAgfTsKICAgICAgICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9u
cywgZGlmZmVyZW5jZSk7CiAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkZWZhdWx0T3B0
aW9ucyk7CiAgICAgfSk7CiAgICAgdmFyIGFjdHVhbE9wdGlvbnMgPSBKU09OLnN0cmluZ2lmeShu
dW1iZXJGb3JtYXQucmVzb2x2ZWRPcHRpb25zKCkpOworICAgIHByaW50KGFjdHVhbE9wdGlvbnMp
OwogICAgIHJldHVybiBwb3NzaWJsZU9wdGlvbnMuaW5jbHVkZXMoYWN0dWFsT3B0aW9ucyk7CiB9
CiAKQEAgLTE4NCw5ICsxODksOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJv
cik7CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4K
LXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdy
b3VwaW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1
ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1
c2VHcm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdheXMi
fV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6
IGZhbHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VH
cm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAnZW4n
LCB1c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVy
Rm9ybWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDQwLDcgQEAgZnVuY3Rpb24gdGVzdE51bWJl
ckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQg
b3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBv
cHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7
Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdl
ckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3Bs
YXkiOiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgYHsi
bnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0
cyI6MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNw
bGF5IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3JlbWVu
dCI6MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5IjoiYXV0
byJ9YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwppbmRleCBhNDM4ZWFjZTFkNjY0N2EwOWQ0MTY1NjI2
NzEyMWNjZDQ4NTA1ZTA3Li5kMzI3NzNlMmFlNmY3NDc1Nzg0ZTdkYWQyMjA0NzYxNzhjMmMzN2Zm
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKQEAgLTI5NCwzICsyOTQsOCBAQCBmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKIHNob3VsZEJlKG5ldyBJbnRsLlBs
dXJhbFJ1bGVzKCdhcicpLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigp
LCAnZmV3LG1hbnksb25lLHR3byx6ZXJvLG90aGVyJyk7CiBzaG91bGRCZShuZXcgSW50bC5QbHVy
YWxSdWxlcygnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmpvaW4oKSwg
J29uZSxvdGhlcicpOwogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2VuJywge3R5cGU6
ICdvcmRpbmFsJ30pLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigpLCAn
ZmV3LG9uZSx0d28sb3RoZXInKTsKKworaWYgKEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNl
bGVjdFJhbmdlKSB7CisgICAgY29uc3QgcGwgPSBuZXcgSW50bC5QbHVyYWxSdWxlcygic2wiKTsK
KyAgICBzaG91bGRCZShwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSksIGBmZXdgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442305</attachid>
            <date>2021-10-24 04:25:46 -0700</date>
            <delta_ts>2021-10-25 22:19:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211024042545.patch</filename>
            <type>text/plain</type>
            <size>62640</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5lY2VjNzgyZjI4ODRjMzZl
NDYxZjQyOWRiYjYzMWU1YjhmZWQxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzaWdu
RGlzcGxheVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGlu
Z1ByaW9yaXR5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3Jv
dXBpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0
aW9ucyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpz
ZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6OlVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlFeHRyYWN0
U2FmZURvdWJsZUludGVnZXIpOgorCiAyMDIxLTEwLTIyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbml0cyBmcm9tIDIzMjAxOQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZGYzYTYxODZmNjNmODM0NDJkZjE3Y2UyOTM0
MjA0Mjg5M2YyYmRmLi44NDA3MmE4ODM1ODRjYjc3NGY3YTkxZTQyMjliZGQyM2VhYzhjYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2ICsxODQ1LDcgQEAKIAkJRTMw
NzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJCUUzMDcxNzhEMjRDNzgyOUEw
MERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRs
TG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8q
IEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CisJCUUz
MDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOEYyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUzMEU4QTU0MjZERTJFNDgwMERB
NDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBFOEE1NjI2REUyRTQ4MDBEQTQ5
MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oICovOyB9OwpAQCAtMTE4MzQsNiArMTE4MzUsNyBAQAogCQkJCTVDNDE5NjYyMjI3MEUw
MDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3
NkYgLyogSW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uYzIyMTY3NGJjNmMzMDk1
YjY2OTJhMjAzMzU5ZThmNTNjMWNkYTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODQwLDcgKzg0MCw3IEBAIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZp
bmUgVV9ISURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAw
OGE4NTM0NjFlNDhlMzZkMmZiZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRj
MDg1NjdlODBiOWI3YzkxMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91
bmRpbmdNb2RlKSBcCisgICAgbWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNj
cmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBt
YWNybyhzZWdtZW50KSBcCisgICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5z
aXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2
ICsyNTEsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVj
aXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rp
c3BsYXkpIFwKICAgICBtYWNybyh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8o
dW5pY29kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQw
ZGZmLi5jMWEyOTE0YzY2NmJhZjAxNTNkYThjZGM3MTAzY2VlNGI1NWNlOWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MzA5LDE0ICszMDksNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtX25vdGF0
aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgbV9y
b3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwgNTAwMCwgMSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRlc1tdID0geworICAgICAg
ICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAw
LCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3VuZGluZ0luY3JlbWVudCA9
IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3VuZGluZ0luY3JlbWVudENh
bmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgPT0gY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1
MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1f
cm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBp
cyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmll
ZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RyYWlsaW5nWmVyb0Rpc3Bs
YXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwgeyB7ICJhdXRvIl9zLCBU
cmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRlZ2VyIl9zLCBUcmFpbGlu
Z1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGluZ1plcm9EaXNwbGF5IG11
c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJcIiJfcywgVHJhaWxpbmda
ZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENvbXBhY3REaXNwbGF5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0
RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQgfSwgeyAibG9u
ZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERpc3BsYXkgbXVzdCBiZSBl
aXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlzcGxheTo6U2hvcnQpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBUcmlTdGF0ZSB1
c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOworICAgIFVzZUdyb3VwaW5n
IGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOworICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVmYXVsdFVzZUdyb3VwaW5n
ID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5nID0gaW50bFN0cmluZ09y
Qm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3JvdXBpbmc6OkFsd2F5cywg
VXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3VwaW5nOjpNaW4yIH0sIHsg
ImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJfcywgVXNlR3JvdXBpbmc6
OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0cnVlLCBmYWxzZSwgXCJt
aW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0VXNlR3JvdXBpbmcpOwor
CisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIHsg
eyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25EaXNwbGF5
OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAiZXhjZXB0
WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVnYXRpdmUiX3MsIFNpZ25E
aXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhlciBcImF1dG9c
IiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwgb3IgXCJuZWdhdGl2ZVwi
Il9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcgIT0gVHJpU3RhdGU6OkZh
bHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNpZ25EaXNwbGF5
IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIiX3MsIFNpZ25E
aXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdheXMgfSwgeyAi
ZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9LCAic2lnbkRpc3BsYXkg
bXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIiwgb3IgXCJleGNl
cHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3JvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9v
ciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkV4cGFuZCB9LAor
ICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWlsIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yIH0sCisgICAgICAgICAg
ICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1bmMgfSwKKyAgICAgICAg
ICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVuIH0KKyAgICAgICAgfSwg
InJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcImV4cGFu
ZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3JcIiwgXCJoYWxmRXhwYW5k
XCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmRh
dGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOwpAQCAtMzI5LDcg
KzM2OCw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVp
bGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAi
KTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1j
ZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1mbG9vciIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Um91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0
cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAg
ICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWlsaW5nIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUt
aGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4g
c3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZmxvb3IiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBAIC0zOTEsMjcg
KzQ3MSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKLSAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsr
aSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYnJl
YWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgeworICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsKKyAgICAgICAgYXV0byBz
dHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgMTA+PihtX3JvdW5k
aW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID49IHN0
cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIjAuIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5nLnNpemUoKSAtIG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKG1fcm91
bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdp
dHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1G
cmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0
czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9i
bG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMu
bWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7
ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNp
c2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2Fz
IENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5n
LgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4LCB3ZSBkbyBub3RoaW5n
LgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3Vz
ZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjcHJlY2lzaW9uCisgICAg
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0
cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5k
aW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKLSAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJn
dWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRz
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBhZnRlciBwcmVjaXNpb24u
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9j
cy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3RyYWlsaW5nLXpl
cm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2Fz
ZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0gICAgICAgIC8vIERvIG5v
dCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50
ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJhaWxpbmcgemVybyBkaXNw
bGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0
LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9i
NzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2CisgICAgICAgIGlmIChXVEY6
OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ2MiwxMCArNTg4LDM0
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICAvLyBPbmx5IElDVTY5
fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBs
aW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNjOTliZmY0NDJkZDM3ZjZk
YWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkg
eworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2ZSIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5l
Z2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFt
X3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWlu
dGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJl
cnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7Cisg
ICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLW1pbjIiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIg
Z3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJ
bnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKQEAgLTUyOSw2ICs2
NzksNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5l
dmVyOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5
OjpFeGNlcHRaZXJvOgorICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAv
LyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4K
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTU5LDExICs3MTAsMjcgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5V
TV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5n
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgLy8g
SWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoK
KyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1
cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAobV91c2VHcm91
cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CiAgICAgICAgIC8v
IElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0Lgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIFVOVU1fR1JPVVBJTkdfVVNFRCwgbV91c2VHcm91cGluZyk7CiAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9S
T1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC03MjcsMTEgKzg5NCw4MSBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRp
c3BsYXkpCiAgICAgICAgIHJldHVybiAiYWx3YXlzIl9zOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6
OkV4Y2VwdFplcm86CiAgICAgICAgIHJldHVybiAiZXhjZXB0WmVybyJfczsKKyAgICBjYXNlIFNp
Z25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAgcmV0dXJuICJuZWdhdGl2ZSJfczsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3Ry
aW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ01v
ZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgcmV0dXJuICJjZWls
Il9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAgcmV0dXJuICJmbG9v
ciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhwYW5kOgorICAgICAgICByZXR1cm4gImV4
cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHJldHVybiAi
dHJ1bmMiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZDZWlsOgorICAgICAgICByZXR1
cm4gImhhbGZDZWlsIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6CisgICAg
ICAgIHJldHVybiAiaGFsZkZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kOgorICAgICAgICByZXR1cm4gImhhbGZFeHBhbmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgcmV0dXJuICJoYWxmVHJ1bmMiX3M7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OkhhbGZFdmVuOgorICAgICAgICByZXR1cm4gImhhbGZFdmVuIl9zOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9E
aXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK3sK
KyAgICBzd2l0Y2ggKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVy
b0Rpc3BsYXk6OkF1dG86CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIFRyYWls
aW5nWmVyb0Rpc3BsYXk6OlN0cmlwSWZJbnRlZ2VyOgorICAgICAgICByZXR1cm4gInN0cmlwSWZJ
bnRlZ2VyIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQor
eworICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50
RGlnaXRzOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4gIm1vcmVQcmVjaXNpb24iX3M7Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICByZXR1cm4g
Imxlc3NQcmVjaXNpb24iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojp1c2VHcm91cGluZ1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCit7
CisgICAgc3dpdGNoICh1c2VHcm91cGluZykgeworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNl
OgorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5n
OjpNaW4yOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWluMiJfcyk7
CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFsd2F5cyJfcyk7CisgICAgfQor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2Jq
ZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKQEAgLTc2NCwxNCArMTAwMSwyMyBAQCBKU09iamVjdCogSW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpD
b21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
OgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdp
dHMsIGpzTnVtYmVyKG1fbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCBq
c051bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNO
dW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpz
TnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ1c2VHcm91cGluZyIpLCBqc0Jvb2xlYW4obV91c2VHcm91cGluZykpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiks
IHVzZUdyb3VwaW5nVmFsdWUodm0sIG1fdXNlR3JvdXBpbmcpKTsKICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3RhdGlvbiIpLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIG5vdGF0aW9uU3RyaW5nKG1fbm90YXRpb24pKSk7CiAgICAgaWYgKG1f
bm90YXRpb24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KQogICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb21wYWN0RGlzcGxheSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGNvbXBhY3REaXNwbGF5U3RyaW5nKG1fY29tcGFjdERpc3Bs
YXkpKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic2lnbkRpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzaWduRGlzcGxheVN0
cmluZyhtX3NpZ25EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5n
TW9kZVN0cmluZyhtX3JvdW5kaW5nTW9kZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nSW5jcmVtZW50LCBqc051bWJlcihtX3JvdW5kaW5n
SW5jcmVtZW50KSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50cmFpbGluZ1plcm9EaXNwbGF5LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcobV90cmFpbGluZ1plcm9EaXNwbGF5KSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdQcmlvcml0eSwganNOb250cml2
aWFsU3RyaW5nKHZtLCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwog
ICAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3Njlh
OTE0OWRiY2E4NTdkZS4uYjRhY2ZmZGY5Y2QyNmUwM2MxYTQ2OTFiMDQxODNjNmY5N2YwNmMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
aApAQCAtNDgsNyArNDgsOCBAQCBjbGFzcyBJbnRsRmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91
bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90Owog
Ci1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMs
IFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJv
dW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMs
IE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24gfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5n
UHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9
OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlm
aWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4g
dm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlw
ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKIApAQCAt
OTQsNiArOTUsOCBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIHVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUpOworCiBwcml2
YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMTA4LDEwIEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBD
dXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBlbnVt
IGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKICAg
ICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07Ci0g
ICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlz
LCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBB
dXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0gY2xh
c3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9
OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1
dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7IENl
aWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhwYW5k
LCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxl
U3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDYgKzExOSw5IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJv
RGlzcGxheSk7CisgICAgc3RhdGljIEpTVmFsdWUgdXNlR3JvdXBpbmdWYWx1ZShWTSYsIFVzZUdy
b3VwaW5nKTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3Jt
YXQ7CiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQpAQCAtMTMzLDYgKzE0Miw3IEBA
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgeyAzIH07CiAgICAgdW5zaWdu
ZWQgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9yb3VuZGluZ0luY3Jl
bWVudCB7IDEgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkRlY2ltYWwgfTsKICAgICBD
dXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CiAgICAgQ3VycmVuY3lTaWduIG1fY3Vy
cmVuY3lTaWduOwpAQCAtMTQwLDcgKzE1MCw5IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgQ29tcGFjdERpc3BsYXkgbV9jb21w
YWN0RGlzcGxheTsKICAgICBJbnRsTm90YXRpb24gbV9ub3RhdGlvbiB7IEludGxOb3RhdGlvbjo6
U3RhbmRhcmQgfTsKICAgICBTaWduRGlzcGxheSBtX3NpZ25EaXNwbGF5OwotICAgIGJvb2wgbV91
c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBUcmFpbGluZ1plcm9EaXNwbGF5IG1fdHJhaWxpbmda
ZXJvRGlzcGxheSB7IFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG8gfTsKKyAgICBVc2VHcm91cGlu
ZyBtX3VzZUdyb3VwaW5nIHsgVXNlR3JvdXBpbmc6OkFsd2F5cyB9OworICAgIFJvdW5kaW5nTW9k
ZSBtX3JvdW5kaW5nTW9kZSB7IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9OwogICAgIEludGxS
b3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0cyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKaW5kZXggMjNkMzg2M2QxNjAwNDMxZWY3NGRmNDBj
ODc0NDcxNzY2ZDA1MTY5YS4uZjQ0ZTE3M2E4ZmU3NTNmODhmODJkZTJlOTQ3MzI5NmIzNWIxNWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0SW5saW5lcy5oCkBAIC02MSw0NyArNjEsNjkgQEAgdm9pZCBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGlu
dGxJbnMKIAogICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbmlt
dW1JbnRlZ2VyRGlnaXRzOwogCi0gICAgaWYgKCFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91
bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0
cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEludGxSb3VuZGluZ1ByaW9y
aXR5IHJvdW5kaW5nUHJpb3JpdHkgPSBpbnRsT3B0aW9uPEludGxSb3VuZGluZ1ByaW9yaXR5Pihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHks
IHsgeyAiYXV0byJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8gfSwgeyAibW9yZVByZWNp
c2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24gfSwgeyAibGVzc1By
ZWNpc2lvbiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24gfSB9LCAicm91
bmRpbmdQcmlvcml0eSBtdXN0IGJlIGVpdGhlciBcImF1dG9cIiwgXCJtb3JlUHJlY2lzaW9uXCIs
IG9yIFwibGVzc1ByZWNpc2lvblwiIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0byk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGlmICghbWluaW11
bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGln
aXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5k
ZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHVuc2ln
bmVkIHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWdu
ZWQgc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRp
b24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlO
YW1lcy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAoc3Bl
Y2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzICE9IHVuZGVmaW5lZFZhbHVlKQotICAgICAgICAg
ICAgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCA9IHN0ZDo6bWluKG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQsIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyk7Ci0gICAgICAg
IHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmlu
ZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDoganNOdW1iZXIoc3BlY2lmaWVkTWluaW11bUZyYWN0
aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAy
MCwgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgKHNwZWNpZmllZE1h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkgPyBqc1VuZGVmaW5lZCgpIDog
anNOdW1iZXIoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzKSwgdm0ucHJvcGVydHlOYW1l
cy0+bWF4aW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRz
IGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRpZ2l0cyJfcyk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgYm9vbCBoYXNTZCA9ICFtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5p
c1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpOworICAgIGJvb2wgaGFzRmQgPSAhbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRl
ZmluZWQoKSB8fCAhbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAg
ICBib29sIG5lZWRTZCA9IGhhc1NkIHx8IHJvdW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5n
UHJpb3JpdHk6OkF1dG87CisgICAgYm9vbCBuZWVkRmQgPSAoIWhhc1NkICYmIG5vdGF0aW9uICE9
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRp
bmdQcmlvcml0eTo6QXV0bzsKKworICAgIGlmIChuZWVkU2QpIHsKKyAgICAgICAgaWYgKGhhc1Nk
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRs
RGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0
c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIx
LCAxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVs
dE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0cywgMjEsIDIxKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzID0gbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICAgICAgaW50
bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2Fu
dERpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9t
aW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5t
X21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDIxOwogICAgICAgICB9Ci0gICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7
Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM7Ci0gICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobm90YXRp
b24gPT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc7Ci0gICAgICAg
IHJldHVybjsKKyAgICBpZiAobmVlZEZkKSB7CisgICAgICAgIGlmIChoYXNGZCkgeworICAgICAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVt
YmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVl
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQorICAg
ICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWluKG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIG1heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgICAgICBl
bHNlIGlmIChtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAg
ICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptYXgobWF4aW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWluaW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgeworICAg
ICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0
ZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzIGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0OworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5n
VHlwZTo6RnJhY3Rpb25EaWdpdHM7Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlv
bkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNl
LT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7
CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAgaWYgKHJvdW5kaW5nUHJpb3Jp
dHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24pCisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNp
c2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQ
cmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOworICAgICAgICBlbHNl
IGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJ
bnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKKyAgICB9CiB9CiAKIGNsYXNzIEludGxGaWVs
ZEl0ZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZGVmMDI5YjE0ZGQzYjllZWJi
YWE2NDM5YzRlMGI0ZjNhNDZiZTcyOC4uYmQ0ZDFjYTMzY2YxMjE2MGE5MGIyMTE1Nzg0YmY0NjAz
MWJlNTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTg5LDIzICs4OSwxOCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogICAgIEpTVmFsdWUgYmlnSW50T3JOdW1iZXIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwogICAgIGlmIChiaWdJbnRPck51bWJlci5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzTnVtYmVyKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAg
IH0KLQotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQz
MigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGds
b2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIHZhbHVlKSkpOwogICAgIH0KLSNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVy
LmlzQmlnSW50KCkpOworICAgIGlmIChhdXRvIHZhbHVlID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3RT
YWZlRG91YmxlSW50ZWdlcihiaWdJbnRPck51bWJlcikpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9i
amVjdCwgdmFsdWUudmFsdWUoKSkpKTsKIAogICAgIEFTU0VSVChiaWdJbnRPck51bWJlci5pc0hl
YXBCaWdJbnQoKSk7CiAgICAgSlNCaWdJbnQqIHZhbHVlID0gYmlnSW50T3JOdW1iZXIuYXNIZWFw
QmlnSW50KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkp
KTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA2YTAwYWI3MDg5Y2VmODZiNmFm
NWE4NGMwMTk2ZThmNDEyNDYzNjFhLi40MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2Vh
YjMwYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTE1MSw2ICsxNTEsNDUgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4K
ICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+
CitSZXN1bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVz
dWx0VHlwZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXpl
cl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJ
TGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9uZWdvdGlh
dGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9vbGVhbm9wdGlvbgorCisgICAgQVNTRVJU
KHZhbHVlcy5zaXplKCkgPiAwKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIW9w
dGlvbnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBv
cHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkgJiYgdmFsdWUuYXNCb29sZWFuKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZVZhbHVlOworCisgICAgICAgIGJvb2wgdmFsdWVCb29sZWFuID0gdmFs
dWUudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZUJvb2xlYW4pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc3lWYWx1ZTsKKworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2YWx1ZXMpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS5maXJzdCA9PSBzdHJpbmdWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZW50cnkuc2Vjb25kOworICAgICAgICB9CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBu
b3RGb3VuZE1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsbGJhY2s7Cit9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VU
Q29tcGFyaXNvbihVQ2hhciBjaGFyYWN0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBkOGJjOTY2OWZjYmFjMmUyMDlh
ZTQ1NGQ2MmJmYzNkMjhhMzVlNDg5Li5kNDVhOTRjMTgwYjcyYmYyNGUxMWJlNWE5Y2FiZTcxNWJk
NTMxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5jcHAKQEAgLTMyLDggKzMyLDMxIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjdW5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2VuZGlmCisjaW5jbHVkZSA8dW5pY29kZS91cGx1
cmFscnVsZXMuaD4KKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaW5j
bHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2RlZmluZSBV
X0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgVVBsdXJhbFJ1bGVz
RGVsZXRlcjo6b3BlcmF0b3IoKShVUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzKQoreworICAgIGlm
IChwbHVyYWxSdWxlcykKKyAgICAgICAgdXBscnVsZXNfY2xvc2UocGx1cmFsUnVsZXMpOworfQor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciogZm9y
bWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShmb3Jt
YXR0ZXIpOworfQorI2VuZGlmCisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25E
ZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTMwLDc4IEBAIHZv
aWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGds
b2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9j
YWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQs
IFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAw
LCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxk
ZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7
CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVy
L2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2Vy
LXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNV
IDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRl
L2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9t
YXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3Np
Z25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0An
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1h
dCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmln
dXJlIGFueXRoaW5nLgorICAgICAgICAvLyBTbywgaWYgbGlua2VkIElDVSBpcyB+NjgsIHdlIGRv
IG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1
aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNwcmVjaXNpb24KKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlv
bkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAt
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3In
IDogJ3MnKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcg
c2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNr
ZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmll
dy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2U+Pih1
bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9u
Vmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1f
bnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0
dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9u
V2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0
b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlf
RkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUsMTMgKzIxOCwxMyBAQCB2b2lkIEludGxQ
bHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246Cisg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsK
ICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJh
bFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRl
cj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09
IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJE
SU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2Nh
bGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFM
IDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTE1OSw4ICsyNTIsMTIgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5p
bXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWdu
aWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODMsOCArMjgw
LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
b3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5LDEyICsyOTcsNTcgQEAgSlNWYWx1ZSBJ
bnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90
aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VS
ZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERv
dWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwg
bV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7Cisg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3Rv
cjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0
V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0
KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1
cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgor
fQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRs
UGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5n
ZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5k
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQg
aXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAg
IHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBz
dGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdl
LmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0
IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVy
KSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3
YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjVmOTY0MDE5OTkzMTM2MmVlNTkwZjExYWQ1N2Y2NmQ2
NGU4OGQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMjggQEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVy
YWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKKyNp
ZiAhZGVmaW5lZChIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1Vf
VkVSU0lPTl9NQUpPUl9OVU0gPj0gNjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSIDEKKyNlbmRpZgorI2VuZGlmCisKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CitzdHJ1
Y3QgVU51bWJlclJhbmdlRm9ybWF0dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RydWN0IFVQ
bHVyYWxSdWxlc0RlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3Io
KShVUGx1cmFsUnVsZXMqKTsKK307CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqKTsKK307Cisj
ZW5kaWYKKwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAg
LTY0LDYgKzgxLDEwIEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVz
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMs
MTEgKzk0LDE4IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3Jk
aW5hbCB9OwogCi0gICAgdXNpbmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBs
cnVsZXNfY2xvc2U+OwogICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVy
YWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9S
TUFUVEVSKQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtZl9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1i
ZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZv
cm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJSYW5nZUZvcm1h
dHRlcjsKKyNlbmRpZgorI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwg
VU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJp
bmcgbV9sb2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuY3BwCmluZGV4IGM4MGJmYTIyMjNmZDUwZThiOTc4MThjZWQ0YjA3NThi
YmNkZTZjMjcuLmVjNjlmZTI5YmIyMzk4MGM2NDdiYTRhZjA2NGIxODY4NzE2YTlhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNTZWxlY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNT
ZWxlY3RSYW5nZSk7CisjZW5kaWYKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOwogCiB9CkBAIC01MCwx
MCArNTMsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiSW50bC5QbHVyYWxSdWxlcyIsICZCYXNlOjoKIEBlbmQKICovCiAKLUludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIApAQCAtNjcsMTEgKzcwLDE1IEBAIEludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZTo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit2b2lkIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5z
ZWxlY3RSYW5nZSwgaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CisjZW5k
aWYKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkBAIC05Miw2ICs5OSwyNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5z
ZWxlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvcGx1cmFs
cnVsZXMvZGlmZi5odG1sI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5zZWxlY3RyYW5n
ZQorICAgIEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQ
bHVyYWxSdWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsdXJh
bFJ1bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5n
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisKKyAgICBk
b3VibGUgc3RhcnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBl
bmQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5zZWxlY3RSYW5nZShnbG9iYWxP
YmplY3QsIHN0YXJ0LCBlbmQpKSk7Cit9CisjZW5kaWYKKwogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAppbmRleCA2ZmFhM2E0Zjc4
YWVhNTk4NDMyY2IxMzAzN2YxMDM1OTM2MjUwODRiLi42MWUwOGIyZjRkMmNhYjA2M2M3NWM2OTc2
YzFiMzYwZmFmZTVmZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEw
MWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li4zYzQ3MTk0NTM3NTc4YWIxMThjNjI0ZDY5YzU1
NDAyMjRlODQxNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
QEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gaGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3RTYWZlRG91YmxlSW50ZWdlcihKU1ZhbHVlIGJpZ0lu
dFZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIERpZ2l0
KiwgdW5zaWduZWQgbGVuZ3RoKTsKIApAQCAtNjc2LDQgKzY3OCwzNiBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgdHJ5Q29udmVydFRvQmlnSW50MzIoSlNCaWdJbnQqIGJpZ0ludCkKICAgICByZXR1
cm4gYmlnSW50OwogfQogCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBKU0Jp
Z0ludDo6dHJ5RXh0cmFjdFNhZmVEb3VibGVJbnRlZ2VyKEpTVmFsdWUgYmlnSW50VmFsdWUpCit7
CisgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gYmlnSW50
VmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKKyAgICBBU1NFUlQoYmlnSW50VmFsdWUu
aXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBiaWdJbnRWYWx1ZS5hc0hl
YXBCaWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdWludDY0X3QgdmFsdWUgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERp
Z2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2YWx1ZSA9IGJpZ0ludC0+ZGlnaXQo
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7Cisg
ICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpID4gMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHVpbnQ2NF90IHZhbHVlID0gYmlnSW50LT5kaWdpdCgwKTsKKyAg
ICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIHZhbHVlIHw9IChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKwor
ICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkp
CisgICAgICAgIHJldHVybiAoYmlnSW50LT5zaWduKCkpID8gLXN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWUpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7CisKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYzY2Fj
NDM2NmEwNjBmNmZjYjYyMS4uNDkxMzMyMGYwZjBjYmE2NjhiYjBkOTQ2NzE4NzRlYmIxY2I1MGQ3
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAg
ICAoc2hvdWxkQmUudGVzdE51bWJlckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6CisgICAgICAg
ICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanM6CisKIDIwMjEtMTAtMjMgIFBoaWxsaXAgTWF0
ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICB1cGRhdGUgdGVzdDI2MgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThh
NWU1MzEwMjY0YmM1Li4zYzMwMWY1NzhhNWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1YTY1NWQ1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsOSArNTMsMTMgQEAgZnVuY3Rp
b24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsK
ICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAgICAgICAgICAgIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAgICAgbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwK
KyAgICAgICAgICAgIHVzZUdyb3VwaW5nOiAiYXV0byIsCiAgICAgICAgICAgICBub3RhdGlvbjog
InN0YW5kYXJkIiwKLSAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIKKyAgICAgICAgICAg
IHNpZ25EaXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGluZ01vZGU6ICJoYWxmRXhw
YW5kIiwKKyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50OiAxLAorICAgICAgICAgICAgdHJh
aWxpbmdaZXJvRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91bmRpbmdQcmlvcml0eTog
ImF1dG8iLAogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25z
LCBkaWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRp
b25zKTsKQEAgLTE4NCw5ICsxODgsOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJl
ckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5O
dW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VF
cnJvcik7CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3Rs
eS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3Vz
ZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwg
dHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbics
IHt1c2VHcm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdh
eXMifV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBp
bmc6IGZhbHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1
c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KElu
dGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAn
ZW4nLCB1c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IElu
dGwuTnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVt
YmVyRm9ybWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDM5LDcgQEAgZnVuY3Rpb24gdGVzdE51
bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBs
ZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0
ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyks
ICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50
ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25E
aWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRp
c3BsYXkiOiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwg
YHsibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRl
Z2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRp
Z2l0cyI6MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25E
aXNwbGF5IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3Jl
bWVudCI6MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5Ijoi
YXV0byJ9YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4w
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwppbmRleCBhNDM4ZWFjZTFkNjY0N2EwOWQ0MTY1
NjI2NzEyMWNjZDQ4NTA1ZTA3Li5kMzI3NzNlMmFlNmY3NDc1Nzg0ZTdkYWQyMjA0NzYxNzhjMmMz
N2ZmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKQEAgLTI5NCwzICsyOTQsOCBAQCBm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKIHNob3VsZEJlKG5ldyBJbnRs
LlBsdXJhbFJ1bGVzKCdhcicpLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9p
bigpLCAnZmV3LG1hbnksb25lLHR3byx6ZXJvLG90aGVyJyk7CiBzaG91bGRCZShuZXcgSW50bC5Q
bHVyYWxSdWxlcygnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmpvaW4o
KSwgJ29uZSxvdGhlcicpOwogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMoJ2VuJywge3R5
cGU6ICdvcmRpbmFsJ30pLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuam9pbigp
LCAnZmV3LG9uZSx0d28sb3RoZXInKTsKKworaWYgKEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBl
LnNlbGVjdFJhbmdlKSB7CisgICAgY29uc3QgcGwgPSBuZXcgSW50bC5QbHVyYWxSdWxlcygic2wi
KTsKKyAgICBzaG91bGRCZShwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSksIGBmZXdgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442464</attachid>
            <date>2021-10-25 22:19:30 -0700</date>
            <delta_ts>2021-10-26 01:25:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211025221929.patch</filename>
            <type>text/plain</type>
            <size>96279</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5mODNiZjY2NGMxOTg2NmQz
ZjI0NDQwZWNjODRhNjgwOTc5YzZhMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpw
YXJ0VHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6SW50bE1hdGhlbWF0aWNhbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjplbnN1cmVOb25Eb3VibGUpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6OnRyeUdldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6Z2V0U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlF
eHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2NlMjkzNDIwNDI4
OTNmMmJkZi4uYWY5NDc3ZmFlNWE2YjY1YTQ1YmQ2YTU1MTRlODI1Mzk3NjdiMjQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCUUzMDcxNzhD
MjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2
NDQgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovOyB9OworCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuY3BwICovOyB9OwogCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUg
LyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwRThBNTYyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmgg
Ki87IH07CiAJCUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMEU4QTUxMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCAqLzsgfTsKQEAgLTE5MTYsNiArMTkxNyw3IEBACiAJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlB
MCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAv
KiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25z
dHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmggKi87IH07CisJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBC
MTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJG
OUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTExODM0LDYgKzExODM2LDgg
QEAKIAkJCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTlBRUMzMjU1OTQ1
N0YwMEI3ODQ4NSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM2NjQ0MUUyNTQ0MDlCMzAwMDE4NzZGIC8qIEludGxMaXN0Rm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRsTnVtYmVyRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1
cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhE
IC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEU4NzkwMjU0Qjk3
ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlF
MUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUwZTIzYTJmMzZjMTI1ZTk2N2YwZWZh
NWM0ZDliOThkYTg4Y2VjMTMuLmViMDk3YWQyZjJlMDY5MWQ0OWUzMTc2YmZmNzkzMTk1YjY2NGIw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzNiwxMSArODM2LDExIEBAIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKLXJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKK3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9ISURFX0RSQUZUX0FQSSdzIGVm
ZmVjdCBpbiB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKLXJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIEBuby11bmlmeSAvLyBDb25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3Qg
dG8gdGhpcyBmaWxlLgogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKaW5kZXggOWRjMGZlMmI2MDQ3ZmIyZTk4NTkwNWYyZGU2MzEzYzI3ZDJk
MDg4NC4uOTdiMjNlNWViZTUyOWJlNjQ5NzFhNzNjYzdlNWM2NTY4YmY0Yjg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xMzIsMTMgKzEzMiwy
MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB0aGlzVmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkpOwogICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAwOGE4NTM0NjFlNDhlMzZkMmZi
ZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRjMDg1NjdlODBiOWI3YzkxMWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91bmRpbmdNb2RlKSBcCisgICAg
bWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3Jv
KHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBtYWNybyhzZWdtZW50KSBcCisg
ICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2ICsyNTEsNyBAQAogICAgIG1h
Y3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIFwKICAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRl
eCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQwZGZmLi45YWE5MDJjZDdkN2U4
ZWY2NzJiNDMzN2RlMDQ2ZDdlZDI2MzViYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzUsOCArMzUsMjAgQEAKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisjaWZkZWYgVV9ISURFX0RSQUZU
X0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1i
ZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ1LDYg
KzU3LDIyIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdHRlciogZm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
IHVudW1mX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAo
Zm9ybWF0dGVyKQorICAgICAgICB1bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgor
CiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAg
c2l6ZV90IHNpemU7CkBAIC0yMTQsNiArMjQyLDU2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
CiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOwogfQogCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKKyAgICAgICAg
Y2FzZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAg
ICAgICAgcmV0dXJuICJpbmZpbml0eSJfczsKKyAgICAgICAgY2FzZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIi
X3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAidW5rbm93biJfczsKKyAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6CisgICAgICAg
IHJldHVybiAiZnJhY3Rpb24iX3M7CisgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJ
RUxEOgorICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5U
X1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAg
ICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVu
dE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJl
dHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOworICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFU
T1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CisgICAgY2FzZSBVTlVNX0NVUlJF
TkNZX0ZJRUxEOgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVU5VTV9Q
RVJDRU5UX0ZJRUxEOgorICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91
bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMK
KyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkg
PyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKKyAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoK
KyAgICAgICAgcmV0dXJuIHNpZ24gPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1Rf
RklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRpZgorICAgIC8vIFRoZXNl
IHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRo
ZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCisgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24n
dCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBh
biAidW5rbm93biIuCisgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6CisgICAgLy8gQW55IG5l
d2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0
IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuICJ1bmtub3duIl9zOworICAgIH0KKyAgICByZXR1cm4gInVua25vd24iX3M7Cit9CisK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewpAQCAtMzA5LDE0ICszODcsNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRp
b25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCisgICAgbV9yb3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwg
NTAwMCwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
c1tdID0geworICAgICAgICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwg
NTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudCA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1l
bnQgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChp
bnZhbGlkUm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1
LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1
MDAwIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3Jl
bWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVt
ZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwg
eyB7ICJhdXRvIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRl
Z2VyIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGlu
Z1plcm9EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJc
IiJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENv
bXBhY3REaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6
U2hvcnQgfSwgeyAibG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlz
cGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwor
ICAgIFVzZUdyb3VwaW5nIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVm
YXVsdFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5n
ID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3Jv
dXBpbmc6OkFsd2F5cywgVXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3Vw
aW5nOjpNaW4yIH0sIHsgImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJf
cywgVXNlR3JvdXBpbmc6OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0
cnVlLCBmYWxzZSwgXCJtaW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0
VXNlR3JvdXBpbmcpOworCisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3Bs
YXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIi
X3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdh
eXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVn
YXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwg
b3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2ln
bkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNpZ25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAi
bmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5
OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9
LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdh
eXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3Jv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91
bmRpbmdNb2RlOjpGbG9vciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01v
ZGU6OkV4cGFuZCB9LAorICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWls
IH0sCisgICAgICAgICAgICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
IH0sCisgICAgICAgICAgICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSwKKyAgICAgICAgICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVu
IH0KKyAgICAgICAgfSwgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJm
bG9vclwiLCBcImV4cGFuZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3Jc
IiwgXCJoYWxmRXhwYW5kXCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3Ry
aW5nKHJlc29sdmVkLmRhdGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRm
OCgpOwpAQCAtMzI5LDcgKzQ0Niw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1jZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpGbG9vcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1mbG9vciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhw
YW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5
IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0
NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWls
aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAg
Ly8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYg
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3
NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
Zmxvb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0zOTEsMjcgKzU0OSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9u
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgewor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsK
KyAgICAgICAgYXV0byBzdHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgMTA+PihtX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID49IHN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIjAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5n
LnNpemUoKSAtIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZv
cm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29u
ZmlndXJlIGFueXRoaW5nLgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4
LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2OSkgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
cHJlY2lzaW9uCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
ID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2ln
bmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBh
ZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNw
bGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0g
ICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJh
aWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2Cisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ2MiwyMCArNjY2LDU0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAg
ICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0
aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNj
OTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2
ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90
YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3Vz
ZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdy
b3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9u
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNv
bnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0dGVyID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4o
dW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVu
dW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0Vf
Tk9ORSwgVU5VTV9JREVOVElUWV9GQUxMQkFDS19SQU5HRSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgogI2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFV
TFQ7CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CkBAIC01MjksMTIgKzc2NywxMyBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2Ug
U2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBj
YXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9u
dW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1h
dERlbGV0ZXI+KHVudW1fb3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRl
bnNpb25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIG1fbnVtYmVyRm9ybWF0ID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+KHVu
dW1fb3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEo
KSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRp
YWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU5LDExICs3OTgs
MjcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUo
bV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNp
c2lvbjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMg
bm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6TGVzc1ByZWNpc2lvbjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1
bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VE
LCBtX3VzZUdyb3VwaW5nKTsKKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykgeworICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJl
ckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIC8vIElnbm9yZSB0aGlzIGNh
c2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVz
ZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9y
bWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9V
TkRJTkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC01NzgsNyArODMz
LDcgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24KICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JN
QVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5p
cXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZf
b3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+
KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVt
YmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVz
KTsKQEAgLTU5MywyOSArODQ4LDI2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICNlbmRpZgot
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgotSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25z
dAorSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8gc3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKGdsb2JhbE9i
amVjdCwgMTApOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBB
U1NFUlQoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpOwotICAgIGF1dG8q
IHJhd1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0
ZXJzOCgpKTsKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBz
dHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cjsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVy
Rm9ybWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBh
dXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBV
Rm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAg
YXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwg
SUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7
Ci0gICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3Ry
aW5nLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7Cisg
ICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRh
dGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3Ry
aW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CkBAIC02MjMsMTIgKzg3NSw3NSBA
QCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwogI2Vs
c2UKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQu
Z2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOworICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVj
aW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHN0cmluZy5kYXRhKCksIHN0cmluZy5sZW5ndGgo
KSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBhIEJpZ0ludC4iX3MpOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJp
bmcoYnVmZmVyKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZm
ZXIpKSk7Cit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+
KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5n
ZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwg
JnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5n
ZSJfcyk7CisKKyAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVl
KHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25z
dCBVQ2hhciogc3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5n
dGgsICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEg
cmFuZ2UiX3MpOworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5n
dGgpKTsKK30KKworSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiBzdGFydCwgSW50
bE1hdGhlbWF0aWNhbFZhbHVlJiYgZW5kKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBzdGFydC5lbnN1cmVO
b25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmlu
ZygpOworCisgICAgZW5kLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0
cmluZyA9IGVuZC5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJl
clJhbmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0
KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJh
bmdlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZv
cm1hdHRlci5nZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwg
ZW5kU3RyaW5nLmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1
cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7
CisKKyAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdl
LmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1h
dCBhIHJhbmdlIl9zKTsKKworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hh
ciogc3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsK
IH0KKyNlbmRpZgogCiBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmco
U3R5bGUgc3R5bGUpCiB7CkBAIC03MjcsMTEgKzEwNDIsODEgQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5KQog
ICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRa
ZXJvOgogICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8iX3M7CisgICAgY2FzZSBTaWduRGlzcGxh
eTo6TmVnYXRpdmU6CisgICAgICAgIHJldHVybiAibmVnYXRpdmUiX3M7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0K
IAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3Vu
ZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAgICAgIHJldHVybiAiY2VpbCJfczsKKyAg
ICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHJldHVybiAiZmxvb3IiX3M7Cisg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgcmV0dXJuICJleHBhbmQiX3M7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICByZXR1cm4gInRydW5jIl9z
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDoKKyAgICAgICAgcmV0dXJuICJoYWxm
Q2VpbCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yOgorICAgICAgICByZXR1
cm4gImhhbGZGbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAg
ICAgICAgcmV0dXJuICJoYWxmRXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxm
VHJ1bmM6CisgICAgICAgIHJldHVybiAiaGFsZlRydW5jIl9zOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpIYWxmRXZlbjoKKyAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
fQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0
cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCit7CisgICAgc3dp
dGNoICh0cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5
OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBUcmFpbGluZ1plcm9E
aXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdlciJf
czsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRp
bmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBlIHJvdW5kaW5nVHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHJvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rp
b25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czoK
KyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9y
ZVByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJtb3JlUHJlY2lzaW9uIl9zOworICAgIGNhc2Ug
SW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJsZXNzUHJl
Y2lzaW9uIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6dXNl
R3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdyb3VwaW5nKQoreworICAgIHN3
aXRjaCAodXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKKyAgICAg
ICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoK
KyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIiX3MpOworICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJhdXRvIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgIH0KKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1p
bnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVjdCogSW50
bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiB7CkBAIC03NjQsMTQgKzExNDksMjMgQEAgSlNPYmplY3QqIEludGxOdW1iZXJG
b3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmlt
dW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMp
KTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRz
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJv
dW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBj
YXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCBqc051
bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1iZXIo
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlciht
X21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3Jv
dXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCB1c2VHcm91
cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOwogICAgIGlmIChtX25vdGF0aW9u
ID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwganNOb250cml2
aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBhY3REaXNwbGF5KSkpOwog
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRpc3BsYXlTdHJpbmcobV9z
aWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCByb3VuZGluZ01vZGVTdHJp
bmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1iZXIobV9yb3VuZGluZ0luY3JlbWVu
dCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxp
bmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0cmFpbGluZ1plcm9EaXNwbGF5
U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKICAgICByZXR1
cm4gb3B0aW9uczsKIH0KIApAQCAtNzgwLDUyICsxMTc0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQogICAg
IG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVNDSUlM
aXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1i
ZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgc3dpdGNoIChmaWVs
ZCkgewotICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgotICAgICAgICBpZiAoc3RkOjppc25h
bih2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKLSAgICAgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiaW5maW5pdHkiX3M7Ci0gICAg
ICAgIHJldHVybiAiaW50ZWdlciJfczsKLSAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6Ci0g
ICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7Ci0gICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJB
VE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7Ci0gICAgY2FzZSBVTlVNX0VY
UE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJf
czsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJl
eHBvbmVudE1pbnVzU2lnbiJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6Ci0gICAg
ICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOwotICAgIGNhc2UgVU5VTV9HUk9VUElOR19T
RVBBUkFUT1JfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZ3JvdXAiX3M7Ci0gICAgY2FzZSBVTlVN
X0NVUlJFTkNZX0ZJRUxEOgotICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOwotICAgIGNhc2Ug
VU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3
ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCi0gICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0
L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4t
VVMuanMKLSAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6
VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKLSAgICBjYXNlIFVOVU1fU0lHTl9G
SUVMRDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWduIl9z
IDogInBsdXNTaWduIl9zOwotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKLSAgICBj
YXNlIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEOgotICAgICAgICByZXR1cm4gInVuaXQiX3M7Ci0g
ICAgY2FzZSBVTlVNX0NPTVBBQ1RfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiY29tcGFjdCJfczsK
LSNlbmRpZgotICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlz
IG5vIHdheSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCi0gICAgLy8g
SWYgdGhleSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5
cGVzLCBzbyBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCi0gICAgY2FzZSBVTlVNX1BFUk1JTExf
RklFTEQ6Ci0gICAgLy8gQW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZp
ZWxkcyBlbnVtIHNob3VsZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwotICAgIH0KLSAgICByZXR1
cm4gInVua25vd24iX3M7Ci19Ci0KLXZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0
c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlIHN0eWxlLCBkb3Vi
bGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYgaXRl
cmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50bE51bWJlckZv
cm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlw
ZSBudW1iZXJUeXBlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3Im
IGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTg2OCw3ICsxMjE3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUKICAg
ICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwogICAgICAg
ICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5k
ZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAg
ICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVy
YWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxk
cyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZp
ZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZt
LCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCBz
aWduLCBudW1iZXJUeXBlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmco
dm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CiAg
ICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBw
YXJ0VHlwZSk7CkBAIC04OTQsNyArMTI0Myw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAg
ICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1B
VFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwotICAgIGF1dG8gZm9ybWF0dGVk
TnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1i
ZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1hdHRl
ZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVu
dW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVtZl9m
b3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksICZzdGF0dXMpOwpAQCAtOTE1LDE2ICsxMjY0LDYzIEBAIEpTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUgdmFsCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgp
KTsKICNlbmRpZgogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsKKyAg
ICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisgICAgSlNB
cnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3Vv
dXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFs
KGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhlbWF0
aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywgaXRl
cmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgcmV0dXJuIHBhcnRzOworfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
SlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25z
dCBhdXRvJiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVm
aWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8g
Zm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURl
bGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisg
ICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRh
dGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9T
dHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVzdWx0
R2V0QWxsRmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQo
KSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIl9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5n
ZXQoKSk7CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkp
OwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgZm9ybWF0VG9Q
YXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmluZywg
aXRlcmF0b3IsIHBhcnRzKTsKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0
LCBtX3N0eWxlLCB2YWx1ZS5zaWduKCksIHZhbHVlLm51bWJlclR5cGUoKSwgcmVzdWx0U3RyaW5n
LCBpdGVyYXRvciwgcGFydHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICByZXR1cm4gcGFydHM7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5k
ZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3NjlhOTE0OWRiY2E4NTdkZS4uMmI1MTYzYTU2ZTU5
YjU2ZTYyYmM2ODEyNGRhYTkyNTRhOTQ3YzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMzgsMjAgKzM4LDk0IEBACiAjZW5k
aWYKICNlbmRpZgogCi0jaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQotI2luY2x1ZGUg
PHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oPgorI2lmICFkZWZpbmVkKEhBVkVfSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA2OAor
I2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIgMQorI2VuZGlmCiAjZW5k
aWYKIAorc3RydWN0IFVOdW1iZXJGb3JtYXR0ZXI7CitzdHJ1Y3QgVU51bWJlclJhbmdlRm9ybWF0
dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSW50bEZpZWxkSXRlcmF0b3I7CiBjbGFz
cyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9uS2V5IDogdWlu
dDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9u
RGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07CitlbnVtIGNsYXNz
IEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50
RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVtIGNsYXNzIEludGxS
b3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNpb24sIExlc3NQcmVj
aXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0YW5kYXJkLCBT
Y2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8dHlwZW5hbWUgSW50
bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
SW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7
CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCitzdHJ1Y3QgVU51bWJlckZvcm1h
dHRlckRlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVt
YmVyRm9ybWF0dGVyKik7Cit9OworI2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCitzdHJ1Y3QgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlciB7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciop
OworfTsKKyNlbmRpZgorCitjbGFzcyBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEKEludGxNYXRoZW1hdGljYWxWYWx1ZSk7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBOdW1iZXJUeXBlIHsgSW50ZWdlciwgSW5maW5pdHksIE5hTiwgfTsKKyAgICB1
c2luZyBWYWx1ZSA9IHN0ZDo6dmFyaWFudDxkb3VibGUsIENTdHJpbmc+OworCisgICAgSW50bE1h
dGhlbWF0aWNhbFZhbHVlKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgSW50bE1hdGhlbWF0
aWNhbFZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVtYmVyVHlw
ZUZyb21Eb3VibGUodmFsdWUpKQorICAgICAgICAsIG1fc2lnbihzdGQ6OnNpZ25iaXQodmFsdWUp
KQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeyB9CisKKyAgICBleHBsaWNpdCBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUoTnVtYmVyVHlwZSBudW1iZXJUeXBlLCBib29sIHNpZ24sIENTdHJp
bmcgdmFsdWUpCisgICAgICAgIDogbV9udW1iZXJUeXBlKG51bWJlclR5cGUpCisgICAgICAgICwg
bV9zaWduKHNpZ24pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBlbnN1cmVOb25Eb3VibGUoKQorICAgIHsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8ZG91YmxlPihtX3ZhbHVlKSkKKyAgICAgICAgICAgIG1fdmFsdWUgPSBTdHJp
bmc6Om51bWJlcihzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKS5hc2NpaSgpOworICAgIH0KKwor
ICAgIE51bWJlclR5cGUgbnVtYmVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyVHlwZTsg
fQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbjsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB0cnlHZXREb3VibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKyAgICBjb25zdCBDU3RyaW5nJiBnZXRTdHJpbmcoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1N0cmluZz4obV92YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gc3RkOjpnZXQ8Q1N0cmluZz4obV92YWx1ZSk7CisgICAgfQorCisgICAg
c3RhdGljIE51bWJlclR5cGUgbnVtYmVyVHlwZUZyb21Eb3VibGUoZG91YmxlIHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE51
bWJlclR5cGU6Ok5hTjsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiBOdW1iZXJUeXBlOjpJbmZpbml0eTsKKyAgICAgICAgcmV0dXJuIE51bWJl
clR5cGU6OkludGVnZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIE51bWJlclR5cGUgbV9udW1i
ZXJUeXBlIHsgTnVtYmVyVHlwZTo6SW50ZWdlciB9OworICAgIGJvb2wgbV9zaWduIHsgZmFsc2Ug
fTsKKyAgICBWYWx1ZSBtX3ZhbHVlIHsgMC4wIH07Cit9OworCiBjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwpAQCAtNzYsMTYgKzE1MCwyNCBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgdm9p
ZCBpbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVz
LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqLCBkb3VibGUpIGNvbnN0OwotICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
SlNCaWdJbnQqKSBjb25zdDsKKyAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIElu
dGxNYXRoZW1hdGljYWxWYWx1ZSYmKSBjb25zdDsKICAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMo
SlNHbG9iYWxPYmplY3QqLCBkb3VibGUpIGNvbnN0OworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUmJikgY29uc3Q7CisjZW5kaWYKICAgICBKU09iamVjdCogcmVzb2x2
ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNWYWx1ZSBmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVj
dCosIGRvdWJsZSwgZG91YmxlKSBjb25zdDsKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xv
YmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYsIEludGxNYXRoZW1hdGljYWxWYWx1
ZSYmKSBjb25zdDsKKyNlbmRpZgorCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAgICB2b2lkIHNldEJvdW5k
Rm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKICAgICBlbnVtIGNsYXNzIFN0eWxlIDog
dWludDhfdCB7IERlY2ltYWwsIFBlcmNlbnQsIEN1cnJlbmN5LCBVbml0IH07CiAKLSAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBTdHlsZSwgZG91
YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3ImLCBKU0FycmF5
KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgdm9pZCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBTdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6Ok51bWJlclR5cGUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmll
bGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CiAgICAgZnJpZW5kIHZvaWQgc2V0TnVtYmVyRm9y
bWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVu
c2lnbmVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQsIEludGxOb3RhdGlvbik7CkBAIC05NCw2ICsxNzYsOCBAQCBjbGFz
cyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAg
ICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1By
aW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUpOworCiBwcml2YXRlOgogICAgIEludGxOdW1i
ZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CkBAIC0xMDUsNyArMTg5LDEwIEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50
OF90IHsgU3RhbmRhcmQsIEFjY291bnRpbmcgfTsKICAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5
IDogdWludDhfdCB7IFNob3J0LCBOYXJyb3csIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIENvbXBh
Y3REaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBMb25nIH07Ci0gICAgZW51bSBjbGFzcyBTaWdu
RGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07Cisg
ICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlz
LCBFeGNlcHRaZXJvLCBOZWdhdGl2ZSB9OworICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJvRGlz
cGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9OworICAgIGVudW0gY2xhc3Mg
VXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9OworICAg
IGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7IENlaWwsIEZsb29yLCBFeHBhbmQs
IFRydW5jLCBIYWxmQ2VpbCwgSGFsZkZsb29yLCBIYWxmRXhwYW5kLCBIYWxmVHJ1bmMsIEhhbGZF
dmVuIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3Bs
YXkpOwpAQCAtMTEzLDE0ICsyMDAsMTcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXRE
aXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBh
Y3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IHJvdW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgdHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSB1c2VHcm91cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAg
V3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCi0gICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKLSAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRl
bGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKICNlbHNlCi0gICAgdXNpbmcg
VU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+PiBtX251bWJl
ckZvcm1hdDsKICNlbmRpZgogCkBAIC0xMzMsNiArMjIzLDcgQEAgY2xhc3MgSW50bE51bWJlckZv
cm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21h
eGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0
cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0
eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVjaW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1
cnJlbmN5RGlzcGxheTsKICAgICBDdXJyZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAs
NyArMjMxLDkgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBDb21wYWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIElu
dGxOb3RhdGlvbiBtX25vdGF0aW9uIHsgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNp
Z25EaXNwbGF5IG1fc2lnbkRpc3BsYXk7Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9
OworICAgIFRyYWlsaW5nWmVyb0Rpc3BsYXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxp
bmdaZXJvRGlzcGxheTo6QXV0byB9OworICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBV
c2VHcm91cGluZzo6QWx3YXlzIH07CisgICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsg
Um91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5k
aW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElu
bGluZXMuaAppbmRleCAyM2QzODYzZDE2MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi44
ZmNlMTU4YTU4OGQzOTU4NGE5Nzg4ZWI5ODc4MWE5OGNlNmQwYTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgK
QEAgLTYxLDQ3ICs2MSw2OSBAQCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bElu
c3RhbmNlLT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAK
LSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwg
IW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
aW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmlj
YW50RGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBp
bnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERp
Z2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEs
IDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1i
ZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhp
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgSW50bFJvdW5kaW5nUHJpb3JpdHkgcm91bmRpbmdQcmlvcml0
eSA9IGludGxPcHRpb248SW50bFJvdW5kaW5nUHJpb3JpdHk+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdQcmlvcml0eSwgeyB7ICJhdXRvIl9zLCBJbnRs
Um91bmRpbmdQcmlvcml0eTo6QXV0byB9LCB7ICJtb3JlUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRp
bmdQcmlvcml0eTo6TW9yZVByZWNpc2lvbiB9LCB7ICJsZXNzUHJlY2lzaW9uIl9zLCBJbnRsUm91
bmRpbmdQcmlvcml0eTo6TGVzc1ByZWNpc2lvbiB9IH0sICJyb3VuZGluZ1ByaW9yaXR5IG11c3Qg
YmUgZWl0aGVyIFwiYXV0b1wiLCBcIm1vcmVQcmVjaXNpb25cIiwgb3IgXCJsZXNzUHJlY2lzaW9u
XCIiX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQz
Ml9NQVg7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRp
bmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgc3BlY2lmaWVkTWluaW11
bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0
aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNYXhpbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rp
b25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGlmIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rp
b25EaWdpdHMgIT0gdW5kZWZpbmVkVmFsdWUpCi0gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0ID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgc3Bl
Y2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bUZy
YWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3Bl
Y2lmaWVkTWluaW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZp
bmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHRO
dW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRz
ID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRN
YXhpbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25E
aWdpdHMsIDAsIDIwLCBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHMpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLSAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFj
dGlvbkRpZ2l0cykgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBib29sIGhh
c1NkID0gIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1h
eGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNG
ZCA9ICFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFz
U2QgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAg
ICBib29sIG5lZWRGZCA9ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21w
YWN0KSB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOwor
CisgICAgaWYgKG5lZWRTZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2Jh
bE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1TaWduaWZpY2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwg
MjEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAg
ICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cyA9IDE7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzID0gMjE7CiAgICAgICAgIH0KLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgaW50bEluc3Rh
bmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLSAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246
OkNvbXBhY3QpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxS
b3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChu
ZWVkRmQpIHsKKyAgICAgICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5z
aWduZWQgdW5kZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11
bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1G
cmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFj
dGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgPSBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9u
RGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNl
LT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7
CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGludGxJ
bnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0
czsKLSAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdDsKLSAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpZiAobmVlZFNkIHx8
IG5lZWRGZCkgeworICAgICAgICBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQ
cmlvcml0eTo6TW9yZVByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBlbHNl
IGlmIChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lz
aW9uKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3Vu
ZGluZ1R5cGU6Okxlc3NQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKGhhc1NkKQorICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNp
Z25pZmljYW50RGlnaXRzOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3Vu
ZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gMDsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cyA9IDE7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSAyOworICAgIH0KIH0KIAogY2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewpAQCAtMTI4
LDQgKzE1MCwzMiBAQCBpbmxpbmUgSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6
dW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiB1bndyYXBG
b3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oZ2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoKSk7CiB9CiAK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbnVt
YmVyZm9ybWF0L2RpZmYuaHRtbCNzZWMtdG9pbnRsbWF0aGVtYXRpY2FsdmFsdWUKK2lubGluZSBJ
bnRsTWF0aGVtYXRpY2FsVmFsdWUgdG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKGF1dG8gbnVtYmVyID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUodmFsdWUp
KQorICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkg
fTsKKworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlOjpQcmVmZXJOdW1iZXIpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbWl0aXZlLmlzQmlnSW50KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUo
cHJpbWl0aXZlKSkKKyAgICAgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBu
dW1iZXIudmFsdWUoKSB9OworICAgICAgICBhdXRvKiBiaWdJbnQgPSBwcmltaXRpdmUuYXNIZWFw
QmlnSW50KCk7CisgICAgICAgIGF1dG8gc3RyaW5nID0gYmlnSW50LT50b1N0cmluZyhnbG9iYWxP
YmplY3QsIDEwKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICAgICAgcmV0dXJuIEludGxNYXRoZW1hdGljYWxWYWx1ZSB7CisgICAgICAgICAgICBJbnRsTWF0
aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXIsCisgICAgICAgICAgICBiaWdJbnQt
PnNpZ24oKSwKKyAgICAgICAgICAgIHN0cmluZy5hc2NpaSgpLAorICAgICAgICB9OworICAgIH0K
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsg
cHJpbWl0aXZlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjliMTRkZDNiOWVlYmJhYTY0Mzlj
NGUwYjRmM2E0NmJlNzI4Li5iYTVhYmZkMjUzN2VlNTdhYmI3NmU3OGYxZDMyNzM2YmUyZmQwYTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzksMTAgQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRU
b1BhcnRzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsKIAorI2lmIEhBVkUoSUNVX1Vf
TlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOworI2VuZGlmCisKIH0K
IAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgiCkBAIC01NSwxMCAr
NTksMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIkludGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQKICovCiAKLUludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNCBAQCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cgogewogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworI2lmIEhBVkUoSUNVX1Vf
TlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zv
cm1hdFJhbmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1u
dW1iZXItZm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYgKzkzLDEzIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8qIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewotICAgICAgICBkb3VibGUgdmFs
dWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKLSAgICB9
CisgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJ
bnQzMigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9t
KGdsb2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxP
YmplY3QsIHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChhdXRvIG51bWJlciA9IHZh
bHVlLnRyeUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52
YWx1ZSgpKSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsK
LSAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKSkpOwog
fQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEzNyw2ICsxMzEsMzIgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChK
U0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsK
IH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0
aW9ucy4KKyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFu
dW1iZXJGb3JtYXQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsK
KworICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBhdXRvIGVuZCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGlmIChhdXRvIHN0YXJ0TnVtYmVyID0gc3RhcnQudHJ5R2V0RG91
YmxlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZW5kTnVtYmVyID0gc3RhcnQudHJ5R2V0RG91Ymxl
KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShudW1iZXJGb3JtYXQtPmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgc3RhcnROdW1iZXIudmFs
dWUoKSwgZW5kTnVtYmVyLnZhbHVlKCkpKSk7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRSYW5nZShnbG9i
YWxPYmplY3QsIFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCkpKSk7Cit9CisjZW5kaWYKKwog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9y
bWF0VG9QYXJ0cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xNTAsMTAg
KzE3MCwyMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYgogICAgIGlmIChVTkxJS0VMWSghbnVt
YmVyRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsK
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBhdXRvIHZhbHVlID0gdG9J
bnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGF1dG8g
bnVtYmVyID0gdmFsdWUudHJ5R2V0RG91YmxlKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cyhnbG9i
YWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9i
amVjdCwgV1RGTW92ZSh2YWx1ZSkpKSk7CisjZWxzZQogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFsdWUp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVy
Rm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFsdWUudmFsdWUoKSkpKTsKKyNl
bmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKaW5kZXggNjE3NWY5ZGQwOTM3
OTI5ZjhmZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMzN2Q2MGY2Njc4NDBiY2MwNGEzMjQ4M2Jj
ZTBhNmE0NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
CmluZGV4IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAxOTZlOGY0MTI0NjM2MWEuLjQxYzJiZmRm
NmVlNTE1YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTUxLDYgKzE1MSw0NSBA
QCBSZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxsYmFjazsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVh
bk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywg
UHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBm
YWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwg
UmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1u
dW1iZXJmb3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2RpZmYuaHRtbCNzZWMtZ2V0c3RyaW5nb3Ji
b29sZWFub3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA+IDApOworCisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNr
OworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCF2
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSAmJiB2
YWx1ZS5hc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlVmFsdWU7CisKKyAgICAg
ICAgYm9vbCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBpZiAoIXZh
bHVlQm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzeVZhbHVlOworCisgICAgICAgIFN0
cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09
IHN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5zZWNvbmQ7CisgICAg
ICAgIH0KKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5kTWVzc2FnZSkpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBmYWxsYmFjazsKK30KIAogQUxXQVlTX0lOTElO
RSBib29sIGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKFVDaGFyIGNoYXJhY3RlcikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3Bw
CmluZGV4IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYyYmZjM2QyOGEzNWU0ODkuLmU4MTQyNGJj
OGEwNjk5MmRkOGFkYzBmNjM1ZjBhOWM5Zjg1ZDVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMzIsOCArMzIsMjYgQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
IAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJCisjZW5k
aWYKKyNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBVUGx1cmFsUnVsZXNEZWxldGVy
OjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpCit7CisgICAgaWYgKHBsdXJh
bFJ1bGVzKQorICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Cit9CisKIGNvbnN0
IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1
bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9j
bG9zZT47CkBAIC0xMDcsOCArMTI1LDc4IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFs
aXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAg
c2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywg
MCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVt
X29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisg
ICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJz
ZS9udW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3
ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3Rl
YWQgb2YgKi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRp
Z2l0czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBz
d2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFj
dGlvbkRpZ2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcv
aWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxl
dG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIC4iKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0
cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24K
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVBy
ZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGlu
ZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLgorICAgICAgICAvLyBT
bywgaWYgbGlua2VkIElDVSBpcyB+NjgsIHdlIGRvIG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6
OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlh
NTAwMjlmZDA0YTgzNjQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3Nr
ZWxldG9ucy5tZCNwcmVjaXNpb24KKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
IiAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcwJyk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
OyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91
bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIu
dG9TdHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAg
YXV0byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
KworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0
ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2Nh
bGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEo
KSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1
cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6
OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJE
ZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxs
YmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdF
X0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRh
KCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
I2Vsc2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0
LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwg
MCwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBA
IC0xMjUsMTMgKzIxMywxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJh
bFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRf
RElHSVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0
cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMs
IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpM
ZXNzUHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQ
bHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9s
b2NhbGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZ
UEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1
cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxl
dGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6
T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxS
dWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsyNDcsMTIgQEAgSlNPYmplY3Qq
IEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1G
cmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rp
b25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50
RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC0xODMsOCArMjc1LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxS
dWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENh
dGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51
bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlv
bnM7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApA
QCAtMTk5LDEyICsyOTIsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRO
dW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwg
dmFsdWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQo
KSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8
VUNoYXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0
aW9uKHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0
dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJp
bmcoYnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAg
IGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdl
dCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5z
aXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0
IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1
bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1i
ZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3Vs
dCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFu
Z2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZSht
X251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2Yg
cGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFu
Z2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjli
NzE4NGUwYjRlNjEyMDZkMGIxYWNhMGZlY2ZjN2M2MmIxNDhkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMTYg
QEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vu
dW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CisKIG5hbWVz
cGFjZSBKU0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOworfTsKKwogZW51bSBjbGFz
cyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQbHVyYWxSdWxl
cyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTY0LDYgKzY5LDEwIEBAIGNs
YXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBKU1ZhbHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAg
ICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFsdWUgc2VsZWN0
UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMsMTEgKzgyLDE2IEBAIGNsYXNz
IEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAg
IGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5hbCB9OwogCi0gICAgdXNp
bmcgVVBsdXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OwotICAg
IHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1f
cGx1cmFsUnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9u
dW1iZXJGb3JtYXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZv
cm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCisg
ICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4g
bV9udW1iZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICB1bnNp
Z25lZCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKaW5k
ZXggYzgwYmZhMjIyM2ZkNTBlOGI5NzgxOGNlZDRiMDc1OGJiY2RlNmMyNy4uZWM2OWZlMjliYjIz
OTgwYzY0N2JhNGFmMDY0YjE4Njg3MTZhOWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCkBAIC0z
Myw2ICszMyw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCk7CisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlKTsKKyNlbmRpZgog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyk7CiAKIH0KQEAgLTUwLDEwICs1MywxMCBAQCBjb25zdCBDbGFz
c0luZm8gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRsLlBsdXJhbFJ1
bGVzIiwgJkJhc2U6OgogQGVuZAogKi8KIAotSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBJbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGU+KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC02Nywx
MSArNzAsMTUgQEAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNlbGVjdFJhbmdlLCBpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDYgKzk5
LDI3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVG
dW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdChnbG9iYWxPYmplY3QsIHZh
bHVlKSkpOwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RS
YW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWlu
dGwucGx1cmFscnVsZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCisgICAgSW50bFBsdXJhbFJ1bGVz
KiBwbHVyYWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGx1cmFsUnVsZXMpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgUGx1cmFsUnVsZXMiX3MpKTsKKworICAgIGRvdWJsZSBzdGFydCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGVuZCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUocGx1cmFsUnVsZXMtPnNlbGVjdFJhbmdlKGdsb2JhbE9iamVjdCwgc3RhcnQsIGVuZCkpKTsK
K30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5oCmluZGV4IDZmYWEzYTRmNzhhZWE1OTg0MzJjYjEzMDM3ZjEwMzU5
MzYyNTA4NGIuLjYxZTA4YjJmNGQyY2FiMDYzYzc1YzY5NzZjMWIzNjBmYWZlNWZkMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogcHJpdmF0ZToKICAgICBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKaW5kZXggMGI1
OTY2MTJmZjhjMzVmMWExZGUyNGRjZjBjNzZlZTNkYWI4NGI1NS4uYzI1Mzg1MDBmYjhlMzQxN2Ni
ZjFjNjA4YWVkNTIxYjc1NGJlOWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTMxOCw3ICszMTgs
NyBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogICAgICAgICB9CiAKICAgICAgICAgSW50bEZp
ZWxkSXRlcmF0b3IgZmllbGRJdGVyYXRvcigqaXRlcmF0b3IuZ2V0KCkpOwotICAgICAgICBJbnRs
TnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgZmll
bGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJp
bmcoKSkpOworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwo
Z2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgc3RkOjpzaWdu
Yml0KGFic1ZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJs
ZShhYnNWYWx1ZSksIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3Ry
aW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2Iz
MzRkZmQ3OC4uYjc2MzE2NzE0MTRjOTNjNWZkODQ0OTNjYzQ5YTNhMzc3NjI0ODE3NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC00NjIsNiArNDYyLDggQEAg
Y2xhc3MgSlNCaWdJbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGhh
c2hTbG93KCk7CiAgICAgfQogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cnlF
eHRyYWN0RG91YmxlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIEpTQmlnSW50KFZNJiwgU3Ry
dWN0dXJlKiwgRGlnaXQqLCB1bnNpZ25lZCBsZW5ndGgpOwogCkBAIC02NzYsNCArNjc4LDQyIEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSB0cnlDb252ZXJ0VG9CaWdJbnQzMihKU0JpZ0ludCogYmln
SW50KQogICAgIHJldHVybiBiaWdJbnQ7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25h
bDxkb3VibGU+IEpTQmlnSW50Ojp0cnlFeHRyYWN0RG91YmxlKEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS5hc051bWJlcigp
OworCisgICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB2YWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgorCisgICAgQVNT
RVJUKHZhbHVlLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gdmFsdWUu
YXNIZWFwQmlnSW50KCk7CisgICAgaWYgKCFiaWdJbnQtPmxlbmd0aCgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHVpbnQ2NF90IGludGVnZXIgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6
ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50
LT5kaWdpdCgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9
PSA0KTsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPiAyKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaW50ZWdlciA9IGJpZ0ludC0+ZGlnaXQoMCk7Cisg
ICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICBpbnRlZ2VyIHw9
IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0K
KworICAgIGlmIChpbnRlZ2VyIDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhTYWZlSW50ZWdl
cigpKSkKKyAgICAgICAgcmV0dXJuIChiaWdJbnQtPnNpZ24oKSkgPyAtc3RhdGljX2Nhc3Q8ZG91
YmxlPihpbnRlZ2VyKSA6IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcik7CisKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQy
OWYzYzYzY2FjNDM2NmEwNjBmNmZjYjYyMS4uM2I4ZTAwMDdlYmI4NGI4YWYyYTg1ZWUxMDA5MWVi
MjlmNmQ3Y2JlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9y
bWF0IHYzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTU0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQp
OgorICAgICAgICAoc2hvdWxkQmUudGVzdE51bWJlckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6
CisgICAgICAgICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanM6CisKIDIwMjEtMTAtMjMgIFBo
aWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICB1cGRhdGUgdGVzdDI2
MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2FkNjZmMGFl
YmNiZmQ1NThhNWU1MzEwMjY0YmM1Li4zYzMwMWY1NzhhNWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1
YTY1NWQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsOSArNTMsMTMg
QEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVy
ZW5jZXMpIHsKICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAgICAgICAg
ICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAgICAgbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VHcm91cGlu
ZzogdHJ1ZSwKKyAgICAgICAgICAgIHVzZUdyb3VwaW5nOiAiYXV0byIsCiAgICAgICAgICAgICBu
b3RhdGlvbjogInN0YW5kYXJkIiwKLSAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIKKyAg
ICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGluZ01vZGU6
ICJoYWxmRXhwYW5kIiwKKyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50OiAxLAorICAgICAg
ICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91bmRpbmdQ
cmlvcml0eTogImF1dG8iLAogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWduKGRlZmF1
bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRl
ZmF1bHRPcHRpb25zKTsKQEAgLTE4NCw5ICsxODgsOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9y
bWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9
KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2Vk
IGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3VzZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzog
dHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicsIHt1c2VHcm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBp
bmc6ICJhbHdheXMifV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5O
dW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuJywg
dXNlR3JvdXBpbmc6IGZhbHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQo
SW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7bG9jYWxl
OiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVy
Rm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjInfSksIFt7
bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3VsZFRocm93
KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJv
dyBuZXcgRXJyb3IoKTsgfSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhl
IEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDM5LDcgQEAgZnVuY3Rp
b24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsK
IHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwog
ICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
b3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJt
aW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVt
RnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0YW5kYXJk
Iiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShv
cHRpb25zKSwgYHsibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1p
bmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1G
cmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJzdGFuZGFy
ZCIsInNpZ25EaXNwbGF5IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQiLCJyb3Vu
ZGluZ0luY3JlbWVudCI6MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3VuZGluZ1By
aW9yaXR5IjoiYXV0byJ9YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNN
QS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwppbmRleCBhNDM4ZWFjZTFkNjY0
N2EwOWQ0MTY1NjI2NzEyMWNjZDQ4NTA1ZTA3Li5kMzI3NzNlMmFlNmY3NDc1Nzg0ZTdkYWQyMjA0
NzYxNzhjMmMzN2ZmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVz
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKQEAgLTI5NCwzICsy
OTQsOCBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKIHNob3VsZEJl
KG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCdhcicpLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVn
b3JpZXMuam9pbigpLCAnZmV3LG1hbnksb25lLHR3byx6ZXJvLG90aGVyJyk7CiBzaG91bGRCZShu
ZXcgSW50bC5QbHVyYWxSdWxlcygnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29y
aWVzLmpvaW4oKSwgJ29uZSxvdGhlcicpOwogc2hvdWxkQmUobmV3IEludGwuUGx1cmFsUnVsZXMo
J2VuJywge3R5cGU6ICdvcmRpbmFsJ30pLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3Jp
ZXMuam9pbigpLCAnZmV3LG9uZSx0d28sb3RoZXInKTsKKworaWYgKEludGwuUGx1cmFsUnVsZXMu
cHJvdG90eXBlLnNlbGVjdFJhbmdlKSB7CisgICAgY29uc3QgcGwgPSBuZXcgSW50bC5QbHVyYWxS
dWxlcygic2wiKTsKKyAgICBzaG91bGRCZShwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSksIGBmZXdg
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442472</attachid>
            <date>2021-10-26 01:25:23 -0700</date>
            <delta_ts>2021-10-26 03:29:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026012522.patch</filename>
            <type>text/plain</type>
            <size>146117</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5jZTNkM2JhMmFiMDRmMTQ3
OTdmNWY5YjljZTZkZjk1ZGVhMjliNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpw
YXJ0VHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6SW50bE1hdGhlbWF0aWNhbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjplbnN1cmVOb25Eb3VibGUpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6OnRyeUdldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6Z2V0U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlF
eHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2NlMjkzNDIwNDI4
OTNmMmJkZi4uYWY5NDc3ZmFlNWE2YjY1YTQ1YmQ2YTU1MTRlODI1Mzk3NjdiMjQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCUUzMDcxNzhD
MjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2
NDQgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovOyB9OworCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuY3BwICovOyB9OwogCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUg
LyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwRThBNTYyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmgg
Ki87IH07CiAJCUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMEU4QTUxMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCAqLzsgfTsKQEAgLTE5MTYsNiArMTkxNyw3IEBACiAJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlB
MCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAv
KiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25z
dHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmggKi87IH07CisJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBC
MTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJG
OUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTExODM0LDYgKzExODM2LDgg
QEAKIAkJCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTlBRUMzMjU1OTQ1
N0YwMEI3ODQ4NSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM2NjQ0MUUyNTQ0MDlCMzAwMDE4NzZGIC8qIEludGxMaXN0Rm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRsTnVtYmVyRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1
cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhE
IC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEU4NzkwMjU0Qjk3
ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlF
MUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUwZTIzYTJmMzZjMTI1ZTk2N2YwZWZh
NWM0ZDliOThkYTg4Y2VjMTMuLmViMDk3YWQyZjJlMDY5MWQ0OWUzMTc2YmZmNzkzMTk1YjY2NGIw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzNiwxMSArODM2LDExIEBAIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKLXJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKK3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9ISURFX0RSQUZUX0FQSSdzIGVm
ZmVjdCBpbiB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKLXJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIEBuby11bmlmeSAvLyBDb25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3Qg
dG8gdGhpcyBmaWxlLgogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKaW5kZXggOWRjMGZlMmI2MDQ3ZmIyZTk4NTkwNWYyZGU2MzEzYzI3ZDJk
MDg4NC4uOTdiMjNlNWViZTUyOWJlNjQ5NzFhNzNjYzdlNWM2NTY4YmY0Yjg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xMzIsMTMgKzEzMiwy
MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB0aGlzVmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkpOwogICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAwOGE4NTM0NjFlNDhlMzZkMmZi
ZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRjMDg1NjdlODBiOWI3YzkxMWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91bmRpbmdNb2RlKSBcCisgICAg
bWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3Jv
KHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBtYWNybyhzZWdtZW50KSBcCisg
ICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2ICsyNTEsNyBAQAogICAgIG1h
Y3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIFwKICAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRl
eCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQwZGZmLi44ZjA5ODcxM2NiZjdj
NjZlYzFhMzI4ZDBkOTBmNzI3Y2ZlNWQ2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzUsOCArMzUsMjAgQEAKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisjaWZkZWYgVV9ISURFX0RSQUZU
X0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1i
ZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ1LDYg
KzU3LDIyIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdHRlciogZm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
IHVudW1mX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAo
Zm9ybWF0dGVyKQorICAgICAgICB1bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgor
CiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAg
c2l6ZV90IHNpemU7CkBAIC0yMTQsNiArMjQyLDU2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
CiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOwogfQogCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKKyAgICAgICAg
Y2FzZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAg
ICAgICAgcmV0dXJuICJpbmZpbml0eSJfczsKKyAgICAgICAgY2FzZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIi
X3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAidW5rbm93biJfczsKKyAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6CisgICAgICAg
IHJldHVybiAiZnJhY3Rpb24iX3M7CisgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJ
RUxEOgorICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5U
X1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAg
ICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVu
dE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJl
dHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOworICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFU
T1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CisgICAgY2FzZSBVTlVNX0NVUlJF
TkNZX0ZJRUxEOgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVU5VTV9Q
RVJDRU5UX0ZJRUxEOgorICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91
bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMK
KyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkg
PyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKKyAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoK
KyAgICAgICAgcmV0dXJuIHNpZ24gPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1Rf
RklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRpZgorICAgIC8vIFRoZXNl
IHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRo
ZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCisgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24n
dCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBh
biAidW5rbm93biIuCisgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6CisgICAgLy8gQW55IG5l
d2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0
IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuICJ1bmtub3duIl9zOworICAgIH0KKyAgICByZXR1cm4gInVua25vd24iX3M7Cit9CisK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewpAQCAtMzA5LDE0ICszODcsNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRp
b25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCisgICAgbV9yb3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwg
NTAwMCwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
c1tdID0geworICAgICAgICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwg
NTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudCA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1l
bnQgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChp
bnZhbGlkUm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1
LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1
MDAwIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3Jl
bWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVt
ZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwg
eyB7ICJhdXRvIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRl
Z2VyIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGlu
Z1plcm9EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJc
IiJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENv
bXBhY3REaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6
U2hvcnQgfSwgeyAibG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlz
cGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwor
ICAgIFVzZUdyb3VwaW5nIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVm
YXVsdFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5n
ID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3Jv
dXBpbmc6OkFsd2F5cywgVXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3Vw
aW5nOjpNaW4yIH0sIHsgImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJf
cywgVXNlR3JvdXBpbmc6OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0
cnVlLCBmYWxzZSwgXCJtaW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0
VXNlR3JvdXBpbmcpOworCisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3Bs
YXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIi
X3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdh
eXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVn
YXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwg
b3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2ln
bkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNpZ25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAi
bmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5
OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9
LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdh
eXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3Jv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91
bmRpbmdNb2RlOjpGbG9vciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01v
ZGU6OkV4cGFuZCB9LAorICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWls
IH0sCisgICAgICAgICAgICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
IH0sCisgICAgICAgICAgICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSwKKyAgICAgICAgICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVu
IH0KKyAgICAgICAgfSwgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJm
bG9vclwiLCBcImV4cGFuZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3Jc
IiwgXCJoYWxmRXhwYW5kXCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3Ry
aW5nKHJlc29sdmVkLmRhdGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRm
OCgpOwpAQCAtMzI5LDcgKzQ0Niw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1jZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpGbG9vcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1mbG9vciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhw
YW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5
IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0
NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWls
aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAg
Ly8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYg
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3
NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
Zmxvb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0zOTEsMjcgKzU0OSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9u
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgewor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsK
KyAgICAgICAgYXV0byBzdHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgMTA+PihtX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID49IHN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIjAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5n
LnNpemUoKSAtIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZv
cm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29u
ZmlndXJlIGFueXRoaW5nLgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4
LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2OSkgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
cHJlY2lzaW9uCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
ID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2ln
bmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBh
ZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNw
bGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0g
ICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJh
aWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2Cisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ2MiwyMCArNjY2LDU0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAg
ICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0
aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNj
OTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2
ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90
YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3Vz
ZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdy
b3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9u
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNv
bnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0dGVyID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4o
dW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVu
dW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0Vf
QVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19BUFBST1hJTUFURUxZLCBkYXRhTG9jYWxlV2l0
aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVO
VU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKQEAgLTUyOSwxMiArNzY3LDEzIEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2Vw
dFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxl
V2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Ns
b3NlPj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lv
bnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICByZXR1cm47CkBAIC01NTks
MTEgKzc5OCwyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJ
Q1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNp
bmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3Jv
dXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5
czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
R1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3Vz
ZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTU3
OCw3ICs4MzMsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbgogI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVy
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOwpAQCAtNTkzLDI5ICs4NDgsMjYgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24K
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwog
I2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCi1KU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFs
dWUpIGNvbnN0CitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LQotICAgIEFTU0VSVChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUkoKSk7Ci0g
ICAgYXV0byogcmF3U3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5n
LmNoYXJhY3RlcnM4KCkpOworICAgIHZhbHVlLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0
IGF1dG8mIHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gYnVmZmVyOwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQo
bV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRO
dW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVk
TnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKLSAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgp
LCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCBz
dHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQu
Il9zKTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKQEAgLTYyMywxMyAr
ODc1LDg5IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0gICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0
cik7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAjZW5kaWYKLSAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAg
ICBpZiAoc3RkOjppc25hbihzdGFydCkgfHwgc3RkOjppc25hbihlbmQpKQorICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgbnVtYmVycyBh
cmUgb3V0IG9mIHJhbmdlIl9zKTsKKworICAgIGlmIChlbmQgPCBzdGFydCkKKyAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2Vy
IHRoYW4gZW5kIl9zKTsKKworICAgIGlmIChzdGQ6OnNpZ25iaXQoZW5kKSAmJiBlbmQgPT0gMCAm
JiBzdGFydCA+PSAwKQorICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworCisgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0
cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4o
dW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdl
KG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUo
cmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0
aCwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBy
YW5nZSJfcyk7CisKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0
aCkpOworfQorCitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHN0YXJ0LCBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUmJiBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGFydC5udW1i
ZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5k
Lm51bWJlclR5cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikK
KyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFz
c2VkIG51bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisKKyAgICBzdGFydC5lbnN1cmVOb25E
b3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygp
OworCisgICAgZW5kLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0cmlu
ZyA9IGVuZC5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJh
bmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1h
dHRlci5nZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5k
U3RyaW5nLmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisK
KyAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdl
dCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBh
IHJhbmdlIl9zKTsKKworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciog
c3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKK30K
KyNlbmRpZgorCiBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzI3LDExICsxMDU1LDgxIEBA
IEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlz
cGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAgY2FzZSBT
aWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOwor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5lZ2F0aXZl
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3Vu
ZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBzd2l0Y2gg
KHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBy
ZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBy
ZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAg
IHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAg
ICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWw6Cisg
ICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVuYyJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAiaGFsZkV2
ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnRy
YWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9E
aXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAgIHJldHVy
biAic3RyaXBJZkludGVnZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3Vu
ZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9yZVByZWNp
c2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VH
cm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9z
KTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0
aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICsxMTYyLDIzIEBAIEpT
T2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1G
cmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rp
b25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50
RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7Cisg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNl
R3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91cGluZykpOwogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9u
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsK
ICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCiAgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3RE
aXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9j
b21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNp
Z25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIGpzTnVtYmVy
KG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpKSk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGlu
Z1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTc4MCw1MiArMTE4Nyw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVu
Y3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsK
IH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQot
ewotICAgIHN3aXRjaCAoZmllbGQpIHsKLSAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuICJuYW4iX3M7
Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
ImluZmluaXR5Il9zOwotICAgICAgICByZXR1cm4gImludGVnZXIiX3M7Ci0gICAgY2FzZSBVTlVN
X0ZSQUNUSU9OX0ZJRUxEOgotICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwotICAgIGNhc2Ug
VU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9z
OwotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgICAgIHJldHVybiAi
ZXhwb25lbnRTZXBhcmF0b3IiX3M7Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7Ci0gICAgY2FzZSBVTlVNX0VY
UE9ORU5UX0ZJRUxEOgotICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKLSAgICBj
YXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImdyb3Vw
Il9zOwotICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJjdXJy
ZW5jeSJfczsKLSAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgLy8gSWYgdGhl
IHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgotICAgICAgICAvLyBK
U1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCi0gICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51
bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7Ci0g
ICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFs
dWUpID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKLSNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCi0gICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKLSAgICAgICAg
cmV0dXJuICJ1bml0Il9zOwotICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgotICAgICAgICBy
ZXR1cm4gImNvbXBhY3QiX3M7Ci0jZW5kaWYKLSAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cg
dXAgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1h
dCBvcHRpb25zLgotICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBh
bnkgb2Yga25vd24gcGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgotICAg
IGNhc2UgVU5VTV9QRVJNSUxMX0ZJRUxEOgotICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8g
dGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFu
ICJ1bmtub3duIiBwYXJ0LgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAidW5rbm93biJf
czsKLSAgICB9Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOwotfQotCi12b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50
bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWU6Ok51bWJlclR5cGUgbnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IEludGxGaWVsZEl0ZXJhdG9yJiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1
bml0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04NjgsNyArMTIzMCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1cnJlbnRJ
bmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCAm
JiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKICAgICAgICAgICAgICsr
Y3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVy
YWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CisgICAgICAg
IGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxT
dHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhm
aWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOwogICAgICAgICBhdXRvIHBhcnRW
YWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRl
eCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtODk0LDcgKzEyNTYsNyBAQCBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsK
LSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7
CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51
bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2
YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKQEAgLTkxNSwxNiArMTI3Nyw2
MyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJh
dG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcoV1RGTW92ZShy
ZXN1bHQpKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRT
dHJpbmcsIGl0ZXJhdG9yLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2Jh
bE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZh
bHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywgaXRlcmF0b3Is
IHBhcnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0
dXJuIHBhcnRzOwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRv
JiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxk
UG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBv
c2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBv
cGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8
dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51
bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEoKSwg
c3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcs
IGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVzdWx0R2V0QWxs
RmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7
CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisg
ICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0lu
dGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUuc2lnbigpLCB2YWx1ZS5udW1iZXJU
eXBlKCksIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIHBhcnRzOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNh
ODU3ZGUuLjhlYmZiNGYxMzk2M2I2MGJmMDExZTk2ZWQ1ODIxOWQ1MjNkMDA3MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTM4
LDIwICszOCwxMDUgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCi0jaW5jbHVkZSA8dW5pY29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjaWYgIWRl
ZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2lmIFVfSUNVX1ZFUlNJ
T05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUiAxCisjZW5kaWYKICNlbmRpZgogCitzdHJ1Y3QgVU51bWJlckZvcm1hdHRlcjsKK3N0cnVj
dCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJbnRs
RmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZh
bnRFeHRlbnNpb25LZXkgOiB1aW50OF90OwogCi1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUg
OiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91
bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlv
bkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24g
fTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nUHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9y
ZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1
aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgSW50bE5vdGF0aW9uKTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
K3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqKTsKK307CisjZW5kaWYKKworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3Jt
YXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9OworI2VuZGlmCisKK2NsYXNzIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoSW50bE1hdGhlbWF0aWNhbFZh
bHVlKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE51bWJlclR5cGUgeyBJbnRlZ2VyLCBJbmZp
bml0eSwgTmFOLCB9OworICAgIHVzaW5nIFZhbHVlID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgQ1N0
cmluZz47CisKKyAgICBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBl
eHBsaWNpdCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1f
bnVtYmVyVHlwZShudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSkpCisgICAgICAgICwgbV9zaWdu
KHN0ZDo6c2lnbmJpdCh2YWx1ZSkpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7IH0K
KworICAgIGV4cGxpY2l0IEludGxNYXRoZW1hdGljYWxWYWx1ZShOdW1iZXJUeXBlIG51bWJlclR5
cGUsIGJvb2wgc2lnbiwgQ1N0cmluZyB2YWx1ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVt
YmVyVHlwZSkKKyAgICAgICAgLCBtX3NpZ24oc2lnbikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuc3VyZU5vbkRvdWJsZSgpCisgICAgeworICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fbnVtYmVyVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOdW1iZXJU
eXBlOjpJbnRlZ2VyOgorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBTdHJpbmc6Om51bWJlcihz
dGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKS5hc2NpaSgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92
YWx1ZSA9IENTdHJpbmcoIm5hbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBOdW1iZXJUeXBlOjpJbmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0g
Q1N0cmluZyhtX3NpZ24gPyAiLWluZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVy
VHlwZSBudW1iZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9v
bCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHRyeUdldERvdWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0
PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIGNvbnN0IENTdHJpbmcmIGdldFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6OmdldDxDU3RyaW5nPihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVt
YmVyVHlwZSBudW1iZXJUeXBlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6
TmFOOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIE51bWJlclR5cGU6OkluZmluaXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50
ZWdlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBO
dW1iZXJUeXBlOjpJbnRlZ2VyIH07CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZh
bHVlIG1fdmFsdWUgeyAwLjAgfTsKK307CisKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Tm9uRmluYWxPYmplY3Q7CkBAIC03NiwxNiArMTYxLDI0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCop
IGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0
aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNvbnN0
OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsg
RGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lkIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNvbnN0
IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0cmlu
ZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1
ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9y
JiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKQEAgLTk0LDYgKzE4Nyw4IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMg
SW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nUHJpb3JpdHlTdHJp
bmcoSW50bFJvdW5kaW5nVHlwZSk7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdChW
TSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNSw3
ICsyMDAsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFu
ZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90
IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkg
OiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDog
dWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNs
YXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFpl
cm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1plcm9EaXNwbGF5IDogdWlu
dDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBjbGFzcyBVc2VHcm91cGlu
ZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07CisgICAgZW51bSBjbGFz
cyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwgRmxvb3IsIEV4cGFuZCwgVHJ1bmMsIEhh
bGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhhbGZUcnVuYywgSGFsZkV2ZW4gfTsKIAog
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CkBAIC0x
MTMsMTQgKzIxMSwxNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJp
bmcoVW5pdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlT
dHJpbmcoQ29tcGFjdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdN
b2RlU3RyaW5nKFJvdW5kaW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGlu
Z1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJp
ZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0
ZXI8dW51bWZfY2xvc2U+OwotICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyID0gSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9u
dW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgogI2Vsc2UKLSAgICB1c2luZyBVTnVtYmVyRm9y
bWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+IG1fbnVtYmVyRm9ybWF0Owog
I2VuZGlmCiAKQEAgLTEzMyw2ICsyMzQsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzIHsgMyB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9Owor
ICAgIHVuc2lnbmVkIG1fcm91bmRpbmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHls
ZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNw
bGF5OwogICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsyNDIsOSBA
QCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9u
IG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkg
bV9zaWduRGlzcGxheTsKLSAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJh
aWxpbmdaZXJvRGlzcGxheSBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvIH07CisgICAgVXNlR3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5n
OjpBbHdheXMgfTsKKyAgICBSb3VuZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQgfTsKICAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsg
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmlu
ZGV4IDIzZDM4NjNkMTYwMDQzMWVmNzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLjVmZjQyY2RlYjQ0
ZGYxZDI0ZGYzZWJkZTJmZjYwZmMyNTAyOTNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcg
KzYxLDY5IEBAIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICgh
bWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7
Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUs
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywg
MjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBJbnRsUm91bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9w
dGlvbjxJbnRsUm91bmRpbmdQcmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1By
aW9yaXR5OjpBdXRvIH0sIHsgIm1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5
OjpNb3JlUHJlY2lzaW9uIH0sIHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9y
aXR5OjpMZXNzUHJlY2lzaW9uIH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIg
XCJhdXRvXCIsIFwibW9yZVByZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50
bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMs
IDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0
aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywg
MCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAh
PSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5p
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAg
ICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZp
bmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFj
dGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwg
MjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNv
bXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rp
b25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3Vu
ZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVl
ZEZkID0gKCFoYXNTZCAmJiBub3RhdGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJv
dW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAo
bmVlZFNkKSB7CisgICAgICAgIGlmIChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAy
MTsKICAgICAgICAgfQotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkg
ewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlw
ZTo6Q29tcGFjdFJvdW5kaW5nOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgewor
ICAgICAgICBpZiAoaGFzRmQpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRl
ZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25E
aWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGln
aXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRz
ID09IHVuZGVmaW5lZFZhbHVlKQorICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0
cyA9IHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OworICAgICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGlu
dGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0OwotICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7
CisgICAgICAgIGlmIChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpN
b3JlUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5k
aW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TGVzc1ByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMg
PSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0g
MTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7
CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CkBAIC0xMjgsNCArMTUwLDQ5
IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JP
bGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHVud3JhcEZvckxlZ2FjeUlu
dGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Z2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25zdHJ1Y3RvcigpKTsKIH0KIAorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQv
ZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGljYWx2YWx1ZQoraW5saW5lIEludGxNYXRoZW1h
dGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAo
YXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAg
IHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBudW1iZXIudmFsdWUoKSB9OworCisgICAg
SlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJlcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUg
PSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSAtPiBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAg
ICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkg
fTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICAg
ICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gSW50
bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAgICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6
TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAgICAgIGJpZ0ludC0+c2lnbigpLAorICAgICAg
ICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmIChwcmlt
aXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJ
bnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSkpOworCisg
ICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBwcmltaXRpdmUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhwcmltaXRpdmUpLT52
YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxP
YmplY3QsIHN0cmluZyk7CisgICAgaWYgKCFiaWdJbnQpCisgICAgICAgIHJldHVybiBJbnRsTWF0
aGVtYXRpY2FsVmFsdWUgeyBQTmFOIH07CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJpZ0ludFRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgYmlnSW50KSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjli
MTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0NmJlNzI4Li45NTkwZjFiYWMyNzllNWZmYjNmZTY3
NGVjMDE4ZjEwYTg5ODdkMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzks
MTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsK
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFu
Z2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQK
ICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFw
KSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNSBAQCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigp
OworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJh
bmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1udW1iZXIt
Zm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYgKzk0LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBp
ZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewotICAgICAgICBkb3VibGUgdmFsdWUgPSBi
aWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAg
YXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2Jh
bE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3Qs
IHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRy
eUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgp
KSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFs
dWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQogCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEzNyw2ICsxMzIsMzggQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKIH0KIAor
I2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4K
KyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJG
b3JtYXQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFu
Z2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKworICAg
IEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisKKyAgICBpZiAoc3RhcnRWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMg
dW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2Jh
bE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJlciA9IHN0YXJ0LnRyeUdldERvdWJsZSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9IGVuZC50cnlHZXREb3VibGUoKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1h
dC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydE51bWJlci52YWx1ZSgpLCBlbmROdW1i
ZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgV1RG
TW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkpKTsKK30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE1MCwxMCArMTc3LDIwIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOwogCisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGlj
YWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2YWx1
ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgbnVt
YmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZS52YWx1ZSgpKSkpOworI2VuZGlmCiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAppbmRleCA2MTc1ZjlkZDA5Mzc5MjlmOGZlYmRhY2Jj
NGU4ZmNkZDQ2YmMzNzQzLi4wMzM3ZDYwZjY2Nzg0MGJjYzA0YTMyNDgzYmNlMGE2YTQ2M2U1YTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIHByaXZh
dGU6CiAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNmEwMGFi
NzA4OWNlZjg2YjZhZjVhODRjMDE5NmU4ZjQxMjQ2MzYxYS4uNDFjMmJmZGY2ZWU1MTVjMjM0ZGNi
Y2U2MGNkYjMzMDNlYWIzMGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0xNTEsNiArMTUxLDQ1IEBAIFJlc3VsdFR5cGUg
aW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9u
cywgUHJvcGVydHlOCiAgICAgcmV0dXJuIGZhbGxiYWNrOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXN1bHRUeXBlPgorUmVzdWx0VHlwZSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHksIFJlc3VsdFR5cGUgdHJ1ZVZhbHVlLCBSZXN1bHRUeXBlIGZhbHN5VmFsdWUsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBlPj4g
dmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNr
KQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12
My9vdXQvbmVnb3RpYXRpb24vZGlmZi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24K
KworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID4gMCk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisKKyAgICBKU1Zh
bHVlIHZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIXZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpICYmIHZhbHVlLmFzQm9vbGVh
bigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWVWYWx1ZTsKKworICAgICAgICBib29sIHZhbHVl
Qm9vbGVhbiA9IHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWVCb29sZWFuKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHN5VmFsdWU7CisKKyAgICAgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogdmFsdWVzKSB7CisgICAgICAgICAgICBpZiAoZW50cnkuZmlyc3QgPT0gc3RyaW5nVmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnNlY29uZDsKKyAgICAgICAgfQorICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgbm90Rm91bmRNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorCisgICAgcmV0dXJuIGZhbGxiYWNrOworfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuVXNl
QVNDSUlVQ0FEVUNFVENvbXBhcmlzb24oVUNoYXIgY2hhcmFjdGVyKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggZDhiYzk2
NjlmY2JhYzJlMjA5YWU0NTRkNjJiZmMzZDI4YTM1ZTQ4OS4uZTgxNDI0YmM4YTA2OTkyZGQ4YWRj
MGY2MzVmMGE5YzlmODVkNWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0zMiw4ICszMiwyNiBAQAogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCisjaWZkZWYgVV9I
SURFX0RSQUZUX0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2luY2x1ZGUg
PHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oPgorI2VuZGlmCisjaWYgSEFW
RShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJl
cnJhbmdlZm9ybWF0dGVyLmg+CisjZW5kaWYKKyNkZWZpbmUgVV9ISURFX0RSQUZUX0FQSSAxCisK
IG5hbWVzcGFjZSBKU0MgewogCit2b2lkIFVQbHVyYWxSdWxlc0RlbGV0ZXI6Om9wZXJhdG9yKCko
VVBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcykKK3sKKyAgICBpZiAocGx1cmFsUnVsZXMpCisgICAg
ICAgIHVwbHJ1bGVzX2Nsb3NlKHBsdXJhbFJ1bGVzKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIElu
dGxQbHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFsUnVsZXMpIH07CiAKIHVz
aW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPjsKQEAgLTEw
Nyw4ICsxMjUsNzggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxl
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBzZXROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25zLCAwLCAzLCBJbnRsTm90
YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCisgICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9w
dHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RF
Q0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0
dXMpKTsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI2ludGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgaW50
ZWdlci13aWR0aC8iLCBXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjcgPyAnKicgOiAnKycp
OyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCisg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgIHN3aXRjaCAobV9yb3Vu
ZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7
CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0
ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0
aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsr
aSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVt
RnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
JyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVy
cy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytp
KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgorICAg
IGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgLy8gQmVmb3Jl
IEludGwuTnVtYmVyRm9ybWF0IHYzLCBpdCB3YXMgQ29tcGFjdFJvdW5kaW5nIG1vZGUsIHdoZXJl
IHdlIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuCisgICAgICAgIC8vIFNvLCBpZiBsaW5rZWQg
SUNVIGlzIH42OCwgd2UgZG8gbm90aGluZy4KKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9jb21taXQvZDdkYjZjMWY4NjU1YmI1MzE1MzY5NWIwOWE1MDAyOWZkMDRhODM2
NAorICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9i
L21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3By
ZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsg
KytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAt
IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
LycpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKG1fcm91bmRpbmdUeXBlID09IEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb24gPyAncicgOiAncycpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOwor
ICAgIFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBhdXRvIHVwY29udmVy
dGVkID0gc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpOworCisgICAgbV9udW1i
ZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZv
cm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRl
ZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBsb2NhbGUuZGF0YSgpLCAmc3RhdHVzKSk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9G
T1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxV
TnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVudW1y
Zl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29udmVy
dGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0VfTk9O
RSwgVU5VTV9JREVOVElUWV9GQUxMQkFDS19SQU5HRSwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwg
JnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFs
UnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjZWxzZQorICAgIG1f
bnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3Jt
YXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBsb2NhbGUuZGF0
YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNSwxMyArMjEz
LDEzIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2ln
bmlmaWNhbnREaWdpdHMpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyNlbmRpZgogCi0gICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBV
UGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZShtX2xvY2FsZS51dGY4KCku
ZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDog
VVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CisgICAgbV9wbHVyYWxSdWxlcyA9IHN0
ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+KHVwbHJ1bGVz
X29wZW5Gb3JUeXBlKGxvY2FsZS5kYXRhKCksIG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gVVBM
VVJBTF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElOQUwsICZzdGF0dXMpKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTU5LDggKzI0NywxMiBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1
bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7
CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11
bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykp
OwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoK
KyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywganNO
dW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVt
YmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051
bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTE4Myw4ICsyNzUsOSBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGx1cmFsQ2F0ZWdvcmllcyIpLCBj
YXRlZ29yaWVzKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBJbnRsTnVtYmVyRm9ybWF0Ojpy
b3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBvcHRpb25zKTsKKyAgICByZXR1cm4gb3B0aW9uczsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlcGx1cmFsCkBAIC0xOTksMTIgKzI5
Miw1NyBAQCBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29ucwogICAgICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKHZtLCAib3RoZXIiX3MpOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVs
ZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7Cisg
ICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9y
bWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1
ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNf
c2VsZWN0Rm9ybWF0dGVkLCBtX3BsdXJhbFJ1bGVzLmdldCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0
KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsK
KyNlbHNlCiAgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQoOCk7CiAgICAgYXV0byBsZW5ndGgg
PSB1cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0KG1fcGx1cmFsUnVsZXMuZ2V0KCksIHZhbHVlLCBt
X251bWJlckZvcm1hdC5nZXQoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJnN0YXR1
cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVl
Il9zKTsKIAogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHJlc3VsdC5kYXRhKCksIGxl
bmd0aCkpOworI2VuZGlmCit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRU
RVIpCitKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIEFT
U0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VE
ZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwg
dmFsdWUiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUi
X3MpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgIHN0YXR1cyA9IGNhbGxC
dWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19zZWxlY3RGb3JSYW5nZSwgbV9wbHVyYWxS
dWxlcy5nZXQoKSwgcmFuZ2UuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKaW5kZXgg
NmQzYWNhYjg0ZTgxNGU1ZjdjMDdkMDI0ZjNlMjVmZjJlNWYwZjZlNC4uOWI3MTg0ZTBiNGU2MTIw
NmQwYjFhY2EwZmVjZmM3YzYyYjE0OGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKQEAgLTI4LDExICsyOCwxNiBAQAogCiAjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgotI2luY2x1
ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lD
VUhlbHBlcnMuaD4KIAorc3RydWN0IFVQbHVyYWxSdWxlczsKKwogbmFtZXNwYWNlIEpTQyB7CiAK
K3N0cnVjdCBVUGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKik7Cit9OworCiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0
ZW5zaW9uS2V5IDogdWludDhfdDsKIAogY2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewpAQCAtNjQsNiArNjksMTAgQEAgY2xhc3MgSW50bFBsdXJh
bFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTVmFsdWUgc2Vs
ZWN0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKSBjb25zdDsKICAgICBKU09iamVjdCog
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKKyNpZiBIQVZFKElDVV9V
X05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNWYWx1ZSBzZWxlY3RSYW5nZShKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3Q7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBJbnRsUGx1cmFsUnVsZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CkBAIC03MywxMSArODIsMTYgQEAgY2xhc3MgSW50bFBsdXJhbFJ1
bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgZW51bSBjbGFzcyBU
eXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAgICB1c2luZyBVUGx1cmFsUnVs
ZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1cGxydWxlc19jbG9zZT47Ci0gICAgdXNpbmcgVU51bWJl
ckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwotCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4gbV9wbHVyYWxSdWxlczsK
KyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRl
cjsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRl
cj4gbV9udW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgorI2Vsc2UKKyAgICB1c2luZyBVTnVt
YmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1h
dDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIHVuc2lnbmVkIG1fbWluaW11
bUludGVnZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEyMjIz
ZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0YWYw
NjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9S
QU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFzZTo6
CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0uaGVh
cCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBAQCBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
KyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9S
QU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihp
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3QsIChK
U0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CiAK
KyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1i
ZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxl
cy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVz
ID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxl
cy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVy
YWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051bWJl
cihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxl
cy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlmCisK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4uNjFl
MDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCAwYjU5NjYxMmZmOGMzNWYx
YTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1Li5jMjUzODUwMGZiOGUzNDE3Y2JmMWM2MDhhZWQ1MjFi
NzU0YmU5YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIEpTVmFsdWUg
SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICBJbnRsRmllbGRJdGVyYXRvciBm
aWVsZEl0ZXJhdG9yKCppdGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0
eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBw
YXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAg
ICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3Qs
IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBzdGQ6OnNpZ25iaXQoYWJzVmFsdWUp
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKGFic1ZhbHVlKSwg
Zm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1
bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li5iNzYz
MTY3MTQxNGM5M2M1ZmQ4NDQ5M2NjNDlhM2EzNzc2MjQ4MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBKU0JpZ0lu
dCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaGFzaFNsb3coKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3REb3VibGUo
SlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBEaWdp
dCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2NzgsNDIgQEAgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50KiBiaWdJbnQpCiAgICAgcmV0
dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gSlNC
aWdJbnQ6OnRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUu
aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzTnVtYmVyKCk7CisKKyAgICBpZiAo
IXZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IHZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisKKyAgICBBU1NFUlQodmFsdWUuaXNI
ZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJbnQo
KTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
dWludDY0X3QgaW50ZWdlciA9IDA7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoRGlnaXQpID09
IDgpIHsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgIT0gMSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGludGVnZXIgPSBiaWdJbnQtPmRpZ2l0KDApOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoRGlnaXQpID09IDQpOworICAgICAg
ICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdpdCgwKTsKKyAgICAgICAgaWYgKGJp
Z0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIGludGVnZXIgfD0gKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KDEpKSA8PCAzMik7CisgICAgfQorCisgICAgaWYgKGlu
dGVnZXIgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKQorICAgICAg
ICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIp
IDogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKTsKKworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhY2M4MDRlZWJmYmJmZDI5ZjNjNjNjYWM0MzY2
YTA2MGY2ZmNiNjIxLi4yMzhkOTE1MDA5ZjAxNzU0NzZlODRlNmVmZWE0ZDI5MjNjNmQ3ZTgwIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYwIEBACisyMDIxLTEwLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJGb3JtYXQgdjMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mb3JF
YWNoKToKKyAgICAgICAgKG5mLmZvcm1hdFJhbmdlVG9QYXJ0cy52YWxpZFJhbmdlcy5mb3JFYWNo
KToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy12My5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qczoKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXJlc29sdmVkLW1hdGNoLXYzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZv
ckVhY2gpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNy
ZW1lbnQtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodmFs
aWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgIChpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnRzLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1y
b3VuZGluZy1pbmNyZW1lbnQtdmFsdWUtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXRhYmxl
LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKE9iamVjdC5rZXlz
LmV4cGVjdGF0aW9ucy5mb3JFYWNoKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtcm91bmRpbmctbW9kZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFJvdW5kaW5nTW9kZS5mb3JFYWNoKToK
KyAgICAgICAgKGludmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaCk6CisgICAgICAgIChsZXQub3B0
aW9ucy5nZXQgc2lnbkRpc3BsYXkpOgorICAgICAgICAobGV0Lm9wdGlvbnMuZ2V0IHJvdW5kaW5n
TW9kZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXNpZ24tZGlzcGxheS12
My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdXNlZ3JvdXBpbmct
djMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAodmFsaWRVc2VHcm91cGluZy5mb3JFYWNoKToKKyAgICAgICAgKGludmFsaWRV
c2VHcm91cGluZy5mb3JFYWNoKToKKyAgICAgICAgKGFsbC5mb3JFYWNoKToKKyAgICAgICAgKG1n
ZDEuZm9yRWFjaCk6CisgICAgICAgIChtZ2QyLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAgKHRlc3ROdW1iZXJGb3JtYXQpOgorICAgICAg
ICAoc2hvdWxkQmUudGVzdE51bWJlckZvcm1hdC5JbnRsLk51bWJlckZvcm1hdCk6CisgICAgICAg
ICogc3RyZXNzL2ludGwtcGx1cmFscnVsZXMtc2VsZWN0cmFuZ2UuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorCiAyMDIxLTEwLTIzICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgdXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWVmMDczOTA2MDQ3
M2YwYjVhNTliNzllYWQ4MDlmMTMwOWVmZDYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzCkBAIC0wLDAgKzEsMTEgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2NvbnN0IG5mID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KCJlbi1VUyIpOworY29uc3Qgc3RhcnQgPSA5ODc2NTQzMjE5ODc2NTQzMjFuOworY29uc3Qg
ZW5kID0gOTg3NjU0MzIxOTg3NjU0MzIybjsKK3Nob3VsZEJlKG5mLmZvcm1hdChzdGFydCksIGA5
ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5mLmZvcm1hdFJhbmdlKQorICAgIHNob3Vs
ZEJlKG5mLmZvcm1hdFJhbmdlKHN0YXJ0LCBlbmQpLCBgOTg3LDY1NCwzMjEsOTg3LDY1NCwzMjHi
gJM5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXJhbmdlLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtZm9ybWF0LXJhbmdlLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1Y2IyMDU3NDE4
NGI5MDNlOWM0MTY2ODdhNjUxYTZhODA2Njg4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMKQEAgLTAsMCArMSwy
MTYgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0gYnV0
IGdvdCAke1N0cmluZyhlcnJvcil9IWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhm
dW5jKSB7CisgICAgZnVuYygpOworfQorCitjb25zdCB2YWxpZFJhbmdlcyA9IFtbLTEyMzQ1LCAt
NTY3OF0sIFstMTIzNDUsIDU2Nzg5XSwgWzEyMzQ1LCA1Njc4OV1dOworCitjb25zdCBuZiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7c2lnbkRpc3BsYXk6ICJleGNlcHRaZXJvIn0pOwor
Wydmb3JtYXRSYW5nZSddLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7CisgIHNob3VsZEJlKCJm
dW5jdGlvbiIsIHR5cGVvZiBuZlttZXRob2RdKTsKKworICAvLyAyLiBQZXJmb3JtID8gUmVxdWly
ZUludGVybmFsU2xvdChuZiwgW1tJbml0aWFsaXplZE51bWJlckZvcm1hdF1dKS4KKyAgLy8gQXNz
ZXJ0IGlmIGNhbGxlZCB3aXRob3V0IG5mCisgIGxldCBmID0gbmZbbWV0aG9kXTsKKyAgc2hvdWxk
VGhyb3coKCkgPT4geyBmKDEsIDIzKSB9LCBUeXBlRXJyb3IpOworCisgIC8vIEFzc2VydCBub3Jt
YWwgY2FsbCBzdWNjZXNzCisgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMSwgMjMp
KTsKKworICAvLyAzLiBJZiBzdGFydCBpcyB1bmRlZmluZWQgLi4uLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCisgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSh1bmRlZmluZWQs
IDIzKSB9LCBUeXBlRXJyb3IpOworICAvLyAzLiBJZiAuLi4gZW5kIGlzIHVuZGVmaW5lZCwgdGhy
b3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhv
ZF0oMSwgdW5kZWZpbmVkKSB9LCBUeXBlRXJyb3IpOworCisgIC8vIDQuIExldCB4IGJlID8gVG9O
dW1lcmljKHN0YXJ0KS4KKyAgLy8gVmVyaWZ5IGl0IHdvbid0IHRocm93IGVycm9yCisgIHNob3Vs
ZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0obnVsbCwgMjMpKTsKKyAgc2hvdWxkTm90VGhyb3co
KCkgPT4gbmZbbWV0aG9kXShmYWxzZSwgMjMpKTsKKyAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZb
bWV0aG9kXSh0cnVlLCAyMykpOworICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKCIx
MiIsIDIzKSk7CisgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oIi0xMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAiLCAyMykpOworICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21l
dGhvZF0oU3ltYm9sKDEyKSwgMjMpIH0sIFR5cGVFcnJvcik7CisgIHNob3VsZE5vdFRocm93KCgp
ID0+IG5mW21ldGhvZF0oMTIsIDIzKSk7CisgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhv
ZF0oMTJuLCAyMykpOworICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oe30sIC0yMykg
fSwgUmFuZ2VFcnJvcik7CisgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZbbWV0aG9kXShbXSwg
MjMpIH0pOworCisgIC8vIDUuIExldCB5IGJlID8gVG9OdW1lcmljKGVuZCkuCisgIC8vIFZlcmlm
eSBpdCB3b24ndCB0aHJvdyBlcnJvcgorICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2Rd
KC0xMiwgbnVsbCkpOworICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKC0xMiwgZmFs
c2UpKTsKKyAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgtMTIsIHRydWUpKTsKKyAg
c2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgIjIzIikpOworICBzaG91bGROb3RU
aHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAiMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAi
KSk7CisgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgU3ltYm9sKDIzKSkgfSwg
VHlwZUVycm9yKTsKKyAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMpKTsK
KyAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjNuKSk7CisgIHNob3VsZFRo
cm93KCgpID0+IHsgbmZbbWV0aG9kXSgtMTIsIHt9KSB9LCBSYW5nZUVycm9yKTsKKyAgc2hvdWxk
Tm90VGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMiwgW10pIH0pOworCisgIC8vIDYuIElmIHgg
aXMgTmFOIC4uLiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgc2hvdWxkVGhyb3co
KCkgPT4geyBuZlttZXRob2RdKE5hTiwgMjMpIH0sIFJhbmdlRXJyb3IpOworICBzaG91bGRUaHJv
dygoKSA9PiB7IG5mW21ldGhvZF0oIk5hTiIsIDIzKSB9LCBSYW5nZUVycm9yKTsKKyAgLy8gNi4g
SWYgLi4uIHkgaXMgTmFOLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICBzaG91bGRU
aHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIsIE5hTikgfSwgUmFuZ2VFcnJvcik7CisgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgIk5hTiIpIH0sIFJhbmdlRXJyb3IpOworICBz
aG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIsICJ4eXoiKSB9LCBSYW5nZUVycm9yKTsK
KworICAvLyA3LiBJZiB4IGlzIGEgbm9uLWZpbml0ZSBOdW1iZXIgLi4uLCB0aHJvdyBhIFJhbmdl
RXJyb3IgZXhjZXB0aW9uLgorICBzaG91bGROb3RUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oLTEy
LzAsIDEyLzApIH0pOworICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIvMCwgLTEy
LzApIH0sIFJhbmdlRXJyb3IpOworCisgIC8vIDguIElmIHggaXMgZ3JlYXRlciB0aGFuIHksIHRo
cm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgIC8vIG5laXRoZXIgeCBub3IgeSBhcmUgYmln
aW50LgorICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMjMsIDEyKSB9LCBSYW5nZUVy
cm9yKTsKKyAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMpKTsKKyAgLy8g
eCBpcyBub3QgYmlnaW50IGJ1dCB5IGlzLgorICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhv
ZF0oMjMsIDEybikgfSwgUmFuZ2VFcnJvcik7CisgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21l
dGhvZF0oMTIsIDIzbikpOworICAvLyB4IGlzIGJpZ2ludCBidXQgeSBpcyBub3QuCisgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyM24sIDEyKSB9LCBSYW5nZUVycm9yKTsKKyAgc2hv
dWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMm4sIDIzKSk7CisgIC8vIGJvdGggeCBhbmQg
eSBhcmUgYmlnaW50LgorICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMjNuLCAxMm4p
IH0sIFJhbmdlRXJyb3IpOworICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEybiwg
MjNuKSk7CisKKyAgdmFsaWRSYW5nZXMuZm9yRWFjaCgKKyAgICAgIGZ1bmN0aW9uKFt4LCB5XSkg
eworICAgICAgICBjb25zdCBYID0gQmlnSW50KHgpOworICAgICAgICBjb25zdCBZID0gQmlnSW50
KHkpOworICAgICAgICBjb25zdCBmb3JtYXR0ZWRfeF95ID0gbmZbbWV0aG9kXSh4LCB5KTsKKyAg
ICAgICAgY29uc3QgZm9ybWF0dGVkX1hfeSA9IG5mW21ldGhvZF0oWCwgeSk7CisgICAgICAgIGNv
bnN0IGZvcm1hdHRlZF94X1kgPSBuZlttZXRob2RdKHgsIFkpOworICAgICAgICBjb25zdCBmb3Jt
YXR0ZWRfWF9ZID0gbmZbbWV0aG9kXShYLCBZKTsKKyAgICAgICAgc2hvdWxkQmUoZm9ybWF0dGVk
X3hfeSwgZm9ybWF0dGVkX1hfeSk7CisgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZv
cm1hdHRlZF94X1kpOworICAgICAgICBzaG91bGRCZShmb3JtYXR0ZWRfeF95LCBmb3JtYXR0ZWRf
WF9ZKTsKKworICAgIH0pOworfSk7CisKKy8vIENoZWNrIHRoZSBudW1iZXIgb2YgcGFydCB3aXRo
IHR5cGU6ICJwbHVzU2lnbiIgYW5kICJtaW51c1NpZ24iIGFyZSBjb3JyZQoraWYgKG5mLmZvcm1h
dFJhbmdlVG9QYXJ0cykgeworICAgIHZhbGlkUmFuZ2VzLmZvckVhY2goCisgICAgICAgIGZ1bmN0
aW9uKFt4LCB5XSkgeworICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUGx1cyA9ICh4ID4gMCkgPyAo
KHkgPiAwKSA/IDIgOiAxKSA6ICgoeSA+IDApID8gMSA6IDApOworICAgICAgICAgIGNvbnN0IGV4
cGVjdGVkTWludXMgPSAoeCA8IDApID8gKCh5IDwgMCkgPyAyIDogMSkgOiAoKHkgPCAwKSA/IDEg
OiAwKTsKKyAgICAgICAgICBsZXQgYWN0dWFsUGx1cyA9IDA7CisgICAgICAgICAgbGV0IGFjdHVh
bE1pbnVzID0gMDsKKyAgICAgICAgICBjb25zdCBwYXJ0cyA9IG5mLmZvcm1hdFJhbmdlVG9QYXJ0
cyh4LCB5KTsKKyAgICAgICAgICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAg
ICAgICAgIGlmIChwYXJ0LnR5cGUgPT0gInBsdXNTaWduIikgYWN0dWFsUGx1cysrOworICAgICAg
ICAgICAgaWYgKHBhcnQudHlwZSA9PSAibWludXNTaWduIikgYWN0dWFsTWludXMrKzsKKyAgICAg
ICAgICB9KTsKKyAgICAgICAgICBjb25zdCBtZXRob2QgPSAiZm9ybWF0UmFuZ2VUb1BhcnRzKCIg
KyB4ICsgIiwgIiArIHkgKyAiKTogIjsKKyAgICAgICAgICBzaG91bGRCZShleHBlY3RlZFBsdXMs
IGFjdHVhbFBsdXMsCisgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2YgdHlwZTogJ3Bs
dXNTaWduJyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICBzaG91bGRCZShleHBl
Y3RlZE1pbnVzLCBhY3R1YWxNaW51cywKKyAgICAgICAgICAgICAgbWV0aG9kICsgIk51bWJlciBv
ZiB0eXBlOiAnbWludXNTaWduJyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgfSk7
Cit9CisKKy8vIEZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1udW1i
ZXJmb3JtYXQtdjMjZm9ybWF0cmFuZ2UtZWNtYS00MDItMzkzCitjb25zdCBuZjIgPSBuZXcgSW50
bC5OdW1iZXJGb3JtYXQoImVuLVVTIiwgeworICBzdHlsZTogImN1cnJlbmN5IiwKKyAgY3VycmVu
Y3k6ICJFVVIiLAorICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAsCit9KTsKKworLy8gUkVBRE1F
Lm1kIHNhaWQgaXQgZXhwZWN0ICLigqwz4oCTNSIKK3Nob3VsZEJlKCLigqwzIOKAkyDigqw1Iiwg
bmYyLmZvcm1hdFJhbmdlKDMsIDUpKTsKKworY29uc3QgbmYzID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KCJlbi1VUyIsIHsKKyAgc3R5bGU6ICJjdXJyZW5jeSIsCisgIGN1cnJlbmN5OiAiRVVSIiwK
KyAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmYzLmZvcm1hdFJhbmdlVG9Q
YXJ0cykgeworICAgIGNvbnN0IGFjdHVhbDMgPSBuZjMuZm9ybWF0UmFuZ2VUb1BhcnRzKDMsIDUp
OworICAgIC8qCisgICAgWworICAgICAge3R5cGU6ICJjdXJyZW5jeSIsIHZhbHVlOiAi4oKsIiwg
c291cmNlOiAic3RhcnRSYW5nZSJ9CisgICAgICB7dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjMi
LCBzb3VyY2U6ICJzdGFydFJhbmdlIn0KKyAgICAgIHt0eXBlOiAibGl0ZXJhbCIsIHZhbHVlOiAi
4oCTIiwgc291cmNlOiAic2hhcmVkIn0KKyAgICAgIHt0eXBlOiAiaW50ZWdlciIsIHZhbHVlOiAi
NSIsIHNvdXJjZTogImVuZFJhbmdlIn0KKyAgICBdCisgICAgKi8KKyAgICBzaG91bGRCZSg1LCBh
Y3R1YWwzLmxlbmd0aCk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1swXS50eXBl
KTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1swXS52YWx1ZSk7CisgICAgc2hvdWxkQmUo
InN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzBdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImludGVnZXIi
LCBhY3R1YWwzWzFdLnR5cGUpOworICAgIHNob3VsZEJlKCIzIiwgYWN0dWFsM1sxXS52YWx1ZSk7
CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzFdLnNvdXJjZSk7CisgICAgc2hv
dWxkQmUoImxpdGVyYWwiLCBhY3R1YWwzWzJdLnR5cGUpOworICAgIHNob3VsZEJlKCIg4oCTICIs
IGFjdHVhbDNbMl0udmFsdWUpOworICAgIHNob3VsZEJlKCJzaGFyZWQiLCBhY3R1YWwzWzJdLnNv
dXJjZSk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1szXS50eXBlKTsKKyAgICBz
aG91bGRCZSgi4oKsIiwgYWN0dWFsM1szXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoImVuZFJhbmdl
IiwgYWN0dWFsM1szXS5zb3VyY2UpOworICAgIHNob3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1s0
XS50eXBlKTsKKyAgICBzaG91bGRCZSgiNSIsIGFjdHVhbDNbNF0udmFsdWUpOworICAgIHNob3Vs
ZEJlKCJlbmRSYW5nZSIsIGFjdHVhbDNbNF0uc291cmNlKTsKK30KKworY29uc3QgbmY0ID0gbmV3
IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgc3R5bGU6ICJjdXJyZW5jeSIsCisgIGN1
cnJlbmN5OiAiRVVSIiwKKyAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitzaG91bGRC
ZSgifuKCrDMiLCBuZjQuZm9ybWF0UmFuZ2UoMi45LCAzLjEpKTsKKworY29uc3QgbmY1ID0gbmV3
IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgc3R5bGU6ICJjdXJyZW5jeSIsCisgIGN1
cnJlbmN5OiAiRVVSIiwKKyAgc2lnbkRpc3BsYXk6ICJhbHdheXMiLAorfSk7CitzaG91bGRCZSgi
fivigqwzLjAwIiwgbmY1LmZvcm1hdFJhbmdlKDIuOTk5LCAzLjAwMSkpOworCitjb25zdCBuZjYg
PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIik7CitzaG91bGRCZSgiM+KAk+KIniIsIG5mNi5m
b3JtYXRSYW5nZSgzLCAxLzApKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmY2LmZvcm1hdFJhbmdl
KDMsIDAvMCk7IH0sIFJhbmdlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZDkyZGMzMTAw
NmUzMWQyOTlhZTg0OTAyODMyZWFhMGM3MzU0NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKQEAgLTAsMCArMSwz
OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitj
b25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK2NvbnN0IHN0cmluZyA9
ICI5ODc2NTQzMjE5ODc2NTQzMjEiOworY29uc3Qgc3RyaW5nMiA9ICI5ODc2NTQzMjE5ODc2NTQz
MjIiOworc2hvdWxkQmUobmYuZm9ybWF0KHN0cmluZyksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMy
MWApOworaWYgKG5mLmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKHN0
cmluZywgc3RyaW5nMiksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4
Nyw2NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC1mb3JtYXQtdG8tcGFydHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1m
b3JtYXQtdG8tcGFydHMuanMKaW5kZXggZWY3MWYwZjFjNmM1NDFkZmE5YmMzNDQxYWExYjNmNDA3
Y2Q1ZTgwMy4uY2NmOTdlYzI0MTU2ZGQyZDRkMmM5YTA1ZjI0NGJjNWJkODYzNjQ1MCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5q
cwpAQCAtNTcsMyArNTcsMzUgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
ewogc2hvdWxkQmUoSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywgeyB1c2VHcm91cGluZzogZmFs
c2UgfSkuZm9ybWF0VG9QYXJ0cyhOdW1iZXIuTUFYX1ZBTFVFKS5sZW5ndGgsIDEpOwogc2hvdWxk
QmUoSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9y
bWF0VG9QYXJ0cyhOdW1iZXIuTUFYX1ZBTFVFKVswXS52YWx1ZS5sZW5ndGgsIDMwOSk7CiBzaG91
bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhf
VkFMVUUpLmxlbmd0aCwgMjA1KTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisg
ICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoNDAwMG4pCisg
ICAgKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2
YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAg
ICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7CisKK3Nob3VsZEJl
KAorICAgIEpTT04uc3RyaW5naWZ5KAorICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMn
KS5mb3JtYXRUb1BhcnRzKC00MDAwbikKKyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAg
ICAgICAgeyJ0eXBlIjoibWludXNTaWduIiwidmFsdWUiOiItIn0sCisgICAgICAgIHsidHlwZSI6
ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6
IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7
CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KAorICAgICAgICBJbnRsLk51bWJlckZv
cm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKCItNDAwMCIpCisgICAgKSwKKyAgICBKU09OLnN0
cmluZ2lmeShbCisgICAgICAgIHsidHlwZSI6Im1pbnVzU2lnbiIsInZhbHVlIjoiLSJ9LAorICAg
ICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiI0In0sCisgICAgICAgIHsidHlwZSI6Imdy
b3VwIiwidmFsdWUiOiIsIn0sCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjAw
MCJ9CisgICAgXSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtcm91bmRpbmctaW5jcmVtZW50LXJlc29sdmVkLW1hdGNoLXYzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXJlc29sdmVkLW1hdGNoLXYz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU2NjE4Y2U5YjBlZmEzMjVmMjYwNWY3NmVlNTZjZDQxMjc2OGQ5NTMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3Vu
ZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMKQEAgLTAsMCArMSw0MSBAQAorLy8g
Q29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgdmFsaWRS
b3VuZGluZ0luY3JlbWVudHMgPSBbCisgIDEsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwg
MjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAKK107CisKK3ZhbGlkUm91bmRpbmdJbmNy
ZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgbGV0IG5mID0g
bmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50fSk7Cisg
IHNob3VsZEJlKHJvdW5kaW5nSW5jcmVtZW50LCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGlu
Z0luY3JlbWVudCk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWJjMmE1ZTNm
ZmU0ODlmZmZmMjBlNTAyNWU0ZWY0ZTZmM2Q1NmVlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzCkBAIC0w
LDAgKzEsNTkgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8v
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8v
ICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
ICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAg
ICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7Cit9CisKKworbGV0IHZhbGlkUm91
bmRpbmdJbmNyZW1lbnRzID0gWworICAxLCAyLCA1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAw
MCwgNTAwMAorXTsKKworbGV0IGludmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBbCisgIC0xLCAt
NSwgMCwgMTAwMSwgMTEwMCwgNTUwMCwgMjAwMDAwLCA1MDAwMDUsIDEwMDAwMDAwLCAxMDAwMCwg
NTAwMDAsIDEwMDAwMCwgNTAwMDAwLCAxMDAwMDAwLAorICA1MDAwMDAwCitdOworCit2YWxpZFJv
dW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5jcmVtZW50KSB7Cisg
ICAgbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50fSk7
Cit9KTsKKworaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5k
aW5nSW5jcmVtZW50KSB7CisgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1lbnR9KQorICB9LCBSYW5nZUVycm9y
KTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91
bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNzBlYzNk
NjRkZjQ2OGM0NzUxZGU4YzlkNDdmMTc2NzY5YzMwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdmFsdWUtdjMu
anMKQEAgLTAsMCArMSw0OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAi
ICsgZXhwZWN0ZWQpOworfQorCitsZXQgcGVubnkgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisg
ICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEgfSk7CitsZXQgbmlja2VsID0gbmV3IEludGwuTnVt
YmVyRm9ybWF0KAorICAgICJlbiIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50OiA1IH0pOworbGV0IGRpbWUgPSBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6
IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEwIH0pOwor
CisvLyBodHRwczovL25lY3MuY29tL2tub3dsZWRnZWJhc2Uvc3lzcHJlZnNfcHJjX21vZF9yb3Vu
ZG1ldGguaHRtCitzaG91bGRCZSgiMTAuMTUiLCBwZW5ueS5mb3JtYXQoMTAuMTU0KSk7CitzaG91
bGRCZSgiMTAuMTYiLCBwZW5ueS5mb3JtYXQoMTAuMTU1KSk7CitzaG91bGRCZSgiMTAuMTAiLCBu
aWNrZWwuZm9ybWF0KDEwLjEyNCkpOworc2hvdWxkQmUoIjEwLjE1Iiwgbmlja2VsLmZvcm1hdCgx
MC4xMjUpKTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NCkpOworLy8gbWlz
dGFrZSBpbiB0aGUgYWJvdmUgcGFnZSwgdGhlIHJlc3VsdCBzaG91bGQgYmUgMTAuNDAgbm90IDEw
LjUwCisvLyBzaG91bGRCZSgiMTAuNTAiLCBkaW1lLmZvcm1hdCgxMC40NDUpKTsKK3Nob3VsZEJl
KCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NSkpOworc2hvdWxkQmUoIjEwLjUwIiwgZGltZS5m
b3JtYXQoMTAuNDUpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC1yb3VuZGluZy1tb2RlLXRhYmxlLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjYjczNDNlYWQx
ZjM5NTcyODgwYThiMGU0MzY5Y2Y5N2ZhZjc0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXRhYmxlLXYzLmpzCkBAIC0w
LDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIg
IiArIGV4cGVjdGVkICsgIiAiICsgbWVzc2FnZSk7Cit9CisKKy8vIENoZWNrIHRoZSByb3VuZGlu
ZyBiZWhhdmlvci4KKy8vIEJhc2VkIG9uIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51
bWJlcmZvcm1hdC12My9vdXQvbnVtYmVyZm9ybWF0L2RpZmYuaHRtbCN0YWJsZS1pbnRsLXJvdW5k
aW5nLW1vZGVzCitsZXQgaW5wdXRzID0gWy0xLjUsIDAuNCwgMC41LCAwLjYsIDEuNV07CitsZXQg
ZXhwZWN0YXRpb25zID0geworICAiY2VpbCI6ICAgICAgIFsiLTEiLCAiMSIsICIxIiwgIjEiLCAi
MiJdLAorICAiZmxvb3IiOiAgICAgIFsiLTIiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAiZXhw
YW5kIjogICAgIFsiLTIiLCAiMSIsICIxIiwgIjEiLCAiMiJdLAorICAidHJ1bmMiOiAgICAgIFsi
LTEiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAiaGFsZkNlaWwiOiAgIFsiLTEiLCAiMCIsICIx
IiwgIjEiLCAiMiJdLAorICAiaGFsZkZsb29yIjogIFsiLTIiLCAiMCIsICIwIiwgIjEiLCAiMSJd
LAorICAiaGFsZkV4cGFuZCI6IFsiLTIiLCAiMCIsICIxIiwgIjEiLCAiMiJdLAorICAiaGFsZlRy
dW5jIjogIFsiLTEiLCAiMCIsICIwIiwgIjEiLCAiMSJdLAorICAiaGFsZkV2ZW4iOiAgIFsiLTIi
LCAiMCIsICIwIiwgIjEiLCAiMiJdLAorfTsKK09iamVjdC5rZXlzKGV4cGVjdGF0aW9ucykuZm9y
RWFjaChmdW5jdGlvbihyb3VuZGluZ01vZGUpIHsKKyAgbGV0IGV4cCA9IGV4cGVjdGF0aW9uc1ty
b3VuZGluZ01vZGVdOworICBsZXQgaWR4ID0gMDsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVy
Rm9ybWF0KCJlbiIsIHtyb3VuZGluZ01vZGUsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMH0pOwor
ICBzaG91bGRCZShyb3VuZGluZ01vZGUsIG5mLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9k
ZSk7CisgIGlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGlucHV0KSB7CisgICAgbGV0IG1zZyA9ICJp
bnB1dDogIiArIGlucHV0ICsgIiB3aXRoIHJvdW5kaW5nTW9kZTogIiArIHJvdW5kaW5nTW9kZTsK
KyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgc2hvdWxkQmUoZXhwW2lk
eCsrXSwgbmYuZm9ybWF0KGlucHV0KSwgbXNnKTsKKyAgICBlbHNlIGlmIChyb3VuZGluZ01vZGUg
IT09ICJoYWxmQ2VpbCIgJiYgcm91bmRpbmdNb2RlICE9PSAiaGFsZkZsb29yIikKKyAgICAgICAg
c2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0KSwgbXNnKTsKKyAgICBlbHNlCisg
ICAgICAgIG5mLmZvcm1hdChpbnB1dCkgLy8gc2hvdWxkIG5vdCB0aHJvdy4KKyAgfSkKK30pOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9k
ZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUt
djMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGI2ODU2ODM4ZjUzOTQ1MzE1ZGMzNmU0YzU0ODFhMmRhMmNjMjdi
MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJv
dW5kaW5nLW1vZGUtdjMuanMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworbGV0IHZhbGlkUm91bmRpbmdNb2RlID0gWworICAgICJjZWlsIiwKKyAgICAiZmxvb3IiLAor
ICAgICJleHBhbmQiLAorICAgICJoYWxmQ2VpbCIsCisgICAgImhhbGZFeHBhbmQiLAorICAgICJo
YWxmRmxvb3IiLAorICAgICJoYWxmVHJ1bmMiLAorICAgICJoYWxmRXZlbiIsCisgICAgInRydW5j
IiwKK107CisKK2xldCBpbnZhbGlkUm91bmRpbmdNb2RlID0gWworICAgICJjZWlsaW5nIiwKKyAg
ICAiZG93biIsCisgICAgIkRvd24iLAorICAgICJmbG9vcmluZyIsCisgICAgImhhbGZEb3duIiwK
KyAgICAiaGFsZlVwIiwKKyAgICAiaGFsZnVwIiwKKyAgICAiaGFsZmV2ZW4iLAorICAgICJoYWxm
ZG93biIsCisgICAgImhhbGYtdXAiLAorICAgICJoYWxmLWV2ZW4iLAorICAgICJoYWxmLWRvd24i
LAorICAgICJ1cCIsCisgICAgIlVwIiwKK107CisKK3ZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2go
ZnVuY3Rpb24ocm91bmRpbmdNb2RlKSB7CisgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1h
dCh1bmRlZmluZWQsIHtyb3VuZGluZ01vZGV9KTsKKyAgc2hvdWxkQmUocm91bmRpbmdNb2RlLCBu
Zi5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpOworfSk7CisKK2ludmFsaWRSb3VuZGlu
Z01vZGUuZm9yRWFjaChmdW5jdGlvbihyb3VuZGluZ01vZGUpIHsKKyAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3Vu
ZGluZ01vZGV9KTsgfSwgYFJhbmdlRXJyb3I6IHJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciAi
Y2VpbCIsICJmbG9vciIsICJleHBhbmQiLCAidHJ1bmMiLCAiaGFsZkNlaWwiLCAiaGFsZkZsb29y
IiwgImhhbGZFeHBhbmQiLCAiaGFsZlRydW5jIiwgb3IgImhhbGZFdmVuImApOworfSk7CisKKy8v
IENoZWNrIGRlZmF1bHQgaXMgImhhbGZFeHBhbmQiCitzaG91bGRCZSgiaGFsZkV4cGFuZCIsIChu
ZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpKTsK
K3Nob3VsZEJlKCJoYWxmRXhwYW5kIiwgKG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICB1bmRl
ZmluZWQsIHtyb3VuZGluZ01vZGU6IHVuZGVmaW5lZH0pLnJlc29sdmVkT3B0aW9ucygpLnJvdW5k
aW5nTW9kZSkpOworCisvLyBDaGVjayByb3VuZGluZ01vZGUgaXMgcmVhZCBvbmNlIGFmdGVyIHJl
YWRpbmcgc2lnbkRpc3BsYXkKKworbGV0IHJlYWQgPSBbXTsKK2xldCBvcHRpb25zID0geworICBn
ZXQgc2lnbkRpc3BsYXkoKSB7IHJlYWQucHVzaCgnc2lnbkRpc3BsYXknKTsgcmV0dXJuIHVuZGVm
aW5lZDsgfSwKKyAgZ2V0IHJvdW5kaW5nTW9kZSgpIHsgcmVhZC5wdXNoKCdyb3VuZGluZ01vZGUn
KTsgcmV0dXJuIHVuZGVmaW5lZDsgfSwKK307CisKK25ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRl
ZmluZWQsIG9wdGlvbnMpOworc2hvdWxkQmUoInNpZ25EaXNwbGF5LHJvdW5kaW5nTW9kZSIsIHJl
YWQuam9pbigiLCIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXNpZ24tZGlzcGxheS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LXNpZ24tZGlzcGxheS12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWNiNGM1MTRiYzNiMTE1NDM5ZGFlZDEx
N2JmNDBlMmE3NjQzODgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHly
aWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAor
Ly8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisv
LyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworLy8gVGVzdCBk
ZWZhdWx0LgorbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCk7CitzaG91bGRCZSgiYXV0
byIsIG5mLnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKworbmYgPSBuZXcgSW50bC5O
dW1iZXJGb3JtYXQoImVuIik7CitzaG91bGRCZSgiYXV0byIsIG5mLnJlc29sdmVkT3B0aW9ucygp
LnNpZ25EaXNwbGF5KTsKKworY29uc3QgdGVzdERhdGEgPSBbCisgICAgWyJhdXRvIiwgICAgICAg
ICItMTIzIiwgICItMCIsICAiMCIsICAiMTIzIl0sCisgICAgWyJhbHdheXMiLCAgICAgICItMTIz
IiwgICItMCIsICIrMCIsICIrMTIzIl0sCisgICAgWyJuZXZlciIsICAgICAgICIxMjMiLCAgICIw
IiwgICIwIiwgICIxMjMiXSwKKyAgICBbImV4Y2VwdFplcm8iLCAgIi0xMjMiLCAgIjAiLCAgIjAi
LCAgIisxMjMiXSwKKyAgICBbIm5lZ2F0aXZlIiwgICAgIi0xMjMiLCAgIjAiLCAgIjAiLCAgIjEy
MyJdLAorXTsKKworZm9yIChjb25zdCBbc2lnbkRpc3BsYXksIG5lZywgbmVnWmVybywgemVybywg
cG9zXSBvZiB0ZXN0RGF0YSkgeworICBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7
c2lnbkRpc3BsYXl9KTsKKyAgc2hvdWxkQmUoc2lnbkRpc3BsYXksIG5mLnJlc29sdmVkT3B0aW9u
cygpLnNpZ25EaXNwbGF5KTsKKyAgc2hvdWxkQmUobmVnLCBuZi5mb3JtYXQoLTEyMykpOworICBp
ZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICAgIHNob3VsZEJlKG5lZ1plcm8sIG5mLmZv
cm1hdCgtMCkpOworICBzaG91bGRCZSh6ZXJvLCBuZi5mb3JtYXQoMCkpOworICBzaG91bGRCZShw
b3MsIG5mLmZvcm1hdCgxMjMpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5
LXJlc29sdmVkLW9wdGlvbnMtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlhZTNmYjBkZjllMzZiZjU5MDRh
MmQ3MzkzMTM5YzYzNTU0ZjJmNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYz
LmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIg
IiArIGV4cGVjdGVkKTsKK30KKworbGV0IGRlZmF1bHRGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzOiAyIH0pOworbGV0IGF1dG9GbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwK
KyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAy
LAorICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ2F1dG8nfSk7CitsZXQgc3RyaXBJZkludGVn
ZXJGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlv
bkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgdHJhaWxpbmdaZXJv
RGlzcGxheTogJ3N0cmlwSWZJbnRlZ2VyJ30pOworCitzaG91bGRCZSgiYXV0byIsIGRlZmF1bHRG
bXQucmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxheSk7CitzaG91bGRCZSgiYXV0
byIsIGF1dG9GbXQucmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxheSk7CitzaG91
bGRCZSgic3RyaXBJZkludGVnZXIiLAorICAgIHN0cmlwSWZJbnRlZ2VyRm10LnJlc29sdmVkT3B0
aW9ucygpLnRyYWlsaW5nWmVyb0Rpc3BsYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXYzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXYzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4ODU1YWIwN2U3Yzg1Nzc3M2Q5NTBhOGQyOWYwOTNkNWRmMDRhMzMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJv
LWRpc3BsYXktdjMuanMKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgZGVmYXVsdEZtdCA9IG5ldyBJbnRs
Lk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhp
bXVtRnJhY3Rpb25EaWdpdHM6IDIgfSk7CitsZXQgYXV0b0ZtdCA9IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM6IDIsCisgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnYXV0byd9KTsKK2xldCBz
dHJpcElmSW50ZWdlckZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICB0
cmFpbGluZ1plcm9EaXNwbGF5OiAnc3RyaXBJZkludGVnZXInfSk7CisKK3Nob3VsZEJlKCIzLjE0
IiwgZGVmYXVsdEZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgiMy4xNCIsIGF1dG9GbXQu
Zm9ybWF0KDMuMTQxMSkpOworc2hvdWxkQmUoIjMuMTQiLCBzdHJpcElmSW50ZWdlckZtdC5mb3Jt
YXQoMy4xNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDMuMDAxNDEx
KSk7CitzaG91bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDMuMDAxNDExKSk7CitpZiAoJHZt
LmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10
LmZvcm1hdCgzLjAwMTQxMSkpOworZWxzZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZklu
dGVnZXJGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRGbXQu
Zm9ybWF0KDIuOTk5NDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDIuOTk5
NDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIsIHN0
cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgyLjk5OTQxMSkpOworZWxzZQorICAgIHNob3VsZEJlKCIz
LjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDIuOTk5NDExKSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qcyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFjZGU2NDdhODg5OWI2YjUxNjhiZmI1ZGVmZTM1OTZiZTEzZjZjMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qcwpA
QCAtMCwwICsxLDE1NSBAQAorLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAg
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
VGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7
U3RyaW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1p
bjIiLAorICAgICJhdXRvIiwKKyAgICAiYWx3YXlzIiwKKyAgICBmYWxzZSwKK107CisKK2xldCBp
bnZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1pbi0yIiwKKyAgICAidHJ1ZSIsCitdOworCit2
YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rpb24odXNlR3JvdXBpbmcpIHsKKyAgbGV0IG5m
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nfSk7CisgIHNo
b3VsZEJlKHVzZUdyb3VwaW5nLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7Cit9
KTsKKworaW52YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rpb24odXNlR3JvdXBpbmcpIHsK
KyAgc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1h
dCh1bmRlZmluZWQsIHt1c2VHcm91cGluZ30pOyB9LCBgUmFuZ2VFcnJvcjogdXNlR3JvdXBpbmcg
bXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsICJtaW4yIiwgImF1dG8iLCBvciAiYWx3YXlzImAp
OworfSk7CisKKy8vIHVzZUdyb3VwaW5nOiB1bmRlZmluZWQgZ2V0ICJhdXRvIgorc2hvdWxkQmUo
ImF1dG8iLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSkucmVzb2x2ZWRPcHRpb25zKCku
dXNlR3JvdXBpbmcpOworc2hvdWxkQmUoImF1dG8iLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3Jt
YXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHVuZGVmaW5lZH0pKQorICAgICAgICAucmVzb2x2
ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworCisvLyB1c2VHcm91cGluZzogdHJ1ZSBnZXQgImFs
d2F5cyIKK3Nob3VsZEJlKCJhbHdheXMiLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5k
ZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHRydWV9KSkKKyAgICAgICAgLnJlc29sdmVkT3B0aW9ucygp
LnVzZUdyb3VwaW5nKTsKKworLy8gdXNlR3JvdXBpbmc6IGZhbHNlIGdldCBmYWxzZQorLy8gdXNl
R3JvdXBpbmc6ICIiIGdldCBmYWxzZQorc2hvdWxkQmUoZmFsc2UsCisgICAgKG5ldyBJbnRsLk51
bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZzogZmFsc2V9KSkKKyAgICAgICAgLnJl
c29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKK3Nob3VsZEJlKGZhbHNlLAorICAgIChuZXcg
SW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6ICIifSkpCisgICAgICAg
IC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CisKKy8vIFNvbWUgbG9jYWxlcyB3aXRo
IGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzCitsZXQgbWdkMSA9IFsiZW4iXTsKKy8vIFNv
bWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzeyIyIn0KK2xldCBt
Z2QyID0gWyJlcyIsICJwbCIsICJsdiIsICJldCIsICJiZyJdOworbGV0IGFsbCA9IG1nZDEuY29u
Y2F0KG1nZDIpOworCisvLyBDaGVjayAiYWx3YXlzIgorYWxsLmZvckVhY2goZnVuY3Rpb24obG9j
YWxlKSB7CisgIGxldCBvZmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3Jv
dXBpbmc6IGZhbHNlfSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VH
cm91cGluZzogZmFsc2UiOworICAvLyBJbiB1c2VHcm91cGluZzogZmFsc2UsIG5vIGdyb3VwaW5n
LgorICBzaG91bGRCZSgzLCBvZmYuZm9ybWF0KDEyMykubGVuZ3RoLCBtc2cpOworICBzaG91bGRC
ZSg0LCBvZmYuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSwgb2ZmLmZv
cm1hdCgxMjM0NSkubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg2LCBvZmYuZm9ybWF0KDEyMzQ1
NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3LCBvZmYuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0
aCwgbXNnKTsKK30pOworCisvLyBDaGVjayBmYWxzZQorYWxsLmZvckVhY2goZnVuY3Rpb24obG9j
YWxlKSB7CisgIGxldCBhbHdheXMgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNl
R3JvdXBpbmc6ICJhbHdheXMifSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsg
IiB1c2VHcm91cGluZzogJ2Fsd2F5cyciOworICBzaG91bGRCZSgzLCBhbHdheXMuZm9ybWF0KDEy
MykubGVuZ3RoKTsKKyAgLy8gSW4gdXNlR3JvdXBpbmc6ICJhbHdheXMiLCBoYXMgZ3JvdXBpbmcg
d2hlbiBtb3JlIHRoYW4gMyBkaWdpdHMuLgorICBzaG91bGRCZSg0ICsgMSwgYWx3YXlzLmZvcm1h
dCgxMjM0KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDUgKyAxLCBhbHdheXMuZm9ybWF0KDEy
MzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1
NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwgYWx3YXlzLmZvcm1hdCgxMjM0NTY3
KS5sZW5ndGgsIG1zZyk7Cit9KTsKKworLy8gQ2hlY2sgIm1pbjIiCithbGwuZm9yRWFjaChmdW5j
dGlvbihsb2NhbGUpIHsKKyAgbGV0IGFsd2F5cyA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2Nh
bGUsIHt1c2VHcm91cGluZzogIm1pbjIifSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9j
YWxlICsgIiB1c2VHcm91cGluZzogJ21pbjInIjsKKyAgc2hvdWxkQmUoMywgYWx3YXlzLmZvcm1h
dCgxMjMpLmxlbmd0aCk7CisgIC8vIEluIHVzZUdyb3VwaW5nOiAibWluMiIsIG5vIGdyb3VwaW5n
IGZvciA0IGRpZ2l0cyBidXQgaGFzIGdyb3VwaW5nCisgIC8vIHdoZW4gbW9yZSB0aGFuIDQgZGln
aXRzLi4KKyAgc2hvdWxkQmUoNCwgYWx3YXlzLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7Cisg
IHNob3VsZEJlKDUgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNo
b3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91
bGRCZSg3ICsgMiwgYWx3YXlzLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsKKwor
Ly8gQ2hlY2sgImF1dG8iCittZ2QxLmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBh
dXRvID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3VzZUdyb3VwaW5nOiAiYXV0byJ9
KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5nOiAnYXV0
byciOworICBzaG91bGRCZSgzLCBhdXRvLmZvcm1hdCgxMjMpLmxlbmd0aCwgbXNnKTsKKyAgc2hv
dWxkQmUoNCArIDEsIGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUo
NSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAx
LCBhdXRvLmZvcm1hdCgxMjM0NTYpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNyArIDIsIGF1
dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworbWdkMi5mb3JFYWNoKGZ1bmN0
aW9uKGxvY2FsZSkgeworICBsZXQgYXV0byA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUs
IHt1c2VHcm91cGluZzogImF1dG8ifSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxl
ICsgIiB1c2VHcm91cGluZzogJ2F1dG8nIjsKKyAgc2hvdWxkQmUoMywgYXV0by5mb3JtYXQoMTIz
KS5sZW5ndGgsIG1zZyk7CisgIC8vIEluIHVzZUdyb3VwaW5nOiAiYXV0byIsIHNpbmNlIHRoZXNl
IGxvY2FsZXMgaGFzCisgIC8vIG1pbmltdW1Hcm91cGluZ0RpZ2l0c3siMiJ9LCBubyBncm91cGlu
ZyBmb3IgNCBkaWdpdHMgYnV0IGhhcyBncm91cGluZworICAvLyB3aGVuIG1vcmUgdGhhbiA0IGRp
Z2l0cy4uCisgIHNob3VsZEJlKDQsIGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAg
c2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3Vs
ZEJlKDYgKyAxLCBhdXRvLmZvcm1hdCgxMjM0NTYpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUo
NyArIDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThhNWU1
MzEwMjY0YmM1Li4zYzMwMWY1NzhhNWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1YTY1NWQ1IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsOSArNTMsMTMgQEAgZnVuY3Rpb24g
dGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAg
ICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAgICAgICAgICAgIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAgICAgbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAg
ICAgICAgICAgIHVzZUdyb3VwaW5nOiAiYXV0byIsCiAgICAgICAgICAgICBub3RhdGlvbjogInN0
YW5kYXJkIiwKLSAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIKKyAgICAgICAgICAgIHNp
Z25EaXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGluZ01vZGU6ICJoYWxmRXhwYW5k
IiwKKyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50OiAxLAorICAgICAgICAgICAgdHJhaWxp
bmdaZXJvRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91bmRpbmdQcmlvcml0eTogImF1
dG8iLAogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBk
aWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25z
KTsKQEAgLTE4NCw5ICsxODgsOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1i
ZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJv
cik7CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4K
LXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdy
b3VwaW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1
ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1
c2VHcm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdheXMi
fV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQo
J2VuJywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6
IGZhbHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VH
cm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAnZW4n
LCB1c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwu
TnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVy
Rm9ybWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDM5LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJl
ckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQg
b3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBv
cHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7
Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdl
ckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdp
dHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3Bs
YXkiOiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgYHsi
bnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2Vy
RGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0
cyI6MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNw
bGF5IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3JlbWVu
dCI6MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5IjoiYXV0
byJ9YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zY2ZkZTc4ZWFiMTI1MzI3ZGQwZDMyOTZiZDI2ZWI3YWQxZGZlY2NiCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpA
QCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAg
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitp
ZiAoSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAgICBjb25zdCBw
bCA9IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCJzbCIpOworICAgIHNob3VsZEJlKCJmZXciLCBwbC5z
ZWxlY3RSYW5nZSgxMDIsIDIwMSkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442476</attachid>
            <date>2021-10-26 03:29:17 -0700</date>
            <delta_ts>2021-10-26 09:56:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026032916.patch</filename>
            <type>text/plain</type>
            <size>146552</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5jZTNkM2JhMmFiMDRmMTQ3
OTdmNWY5YjljZTZkZjk1ZGVhMjliNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpw
YXJ0VHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6SW50bE1hdGhlbWF0aWNhbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjplbnN1cmVOb25Eb3VibGUpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6OnRyeUdldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6Z2V0U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlF
eHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2NlMjkzNDIwNDI4
OTNmMmJkZi4uYWY5NDc3ZmFlNWE2YjY1YTQ1YmQ2YTU1MTRlODI1Mzk3NjdiMjQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCUUzMDcxNzhD
MjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2
NDQgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovOyB9OworCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuY3BwICovOyB9OwogCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUg
LyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwRThBNTYyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmgg
Ki87IH07CiAJCUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMEU4QTUxMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCAqLzsgfTsKQEAgLTE5MTYsNiArMTkxNyw3IEBACiAJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlB
MCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAv
KiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25z
dHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmggKi87IH07CisJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBC
MTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJG
OUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTExODM0LDYgKzExODM2LDgg
QEAKIAkJCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTlBRUMzMjU1OTQ1
N0YwMEI3ODQ4NSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM2NjQ0MUUyNTQ0MDlCMzAwMDE4NzZGIC8qIEludGxMaXN0Rm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRsTnVtYmVyRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1
cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhE
IC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEU4NzkwMjU0Qjk3
ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlF
MUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUwZTIzYTJmMzZjMTI1ZTk2N2YwZWZh
NWM0ZDliOThkYTg4Y2VjMTMuLmViMDk3YWQyZjJlMDY5MWQ0OWUzMTc2YmZmNzkzMTk1YjY2NGIw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzNiwxMSArODM2LDExIEBAIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKLXJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKK3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9ISURFX0RSQUZUX0FQSSdzIGVm
ZmVjdCBpbiB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKLXJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIEBuby11bmlmeSAvLyBDb25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3Qg
dG8gdGhpcyBmaWxlLgogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKaW5kZXggOWRjMGZlMmI2MDQ3ZmIyZTk4NTkwNWYyZGU2MzEzYzI3ZDJk
MDg4NC4uOTdiMjNlNWViZTUyOWJlNjQ5NzFhNzNjYzdlNWM2NTY4YmY0Yjg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xMzIsMTMgKzEzMiwy
MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB0aGlzVmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkpOwogICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAwOGE4NTM0NjFlNDhlMzZkMmZi
ZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRjMDg1NjdlODBiOWI3YzkxMWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91bmRpbmdNb2RlKSBcCisgICAg
bWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3Jv
KHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBtYWNybyhzZWdtZW50KSBcCisg
ICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2ICsyNTEsNyBAQAogICAgIG1h
Y3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIFwKICAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRl
eCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQwZGZmLi44ZjA5ODcxM2NiZjdj
NjZlYzFhMzI4ZDBkOTBmNzI3Y2ZlNWQ2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzUsOCArMzUsMjAgQEAKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisjaWZkZWYgVV9ISURFX0RSQUZU
X0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1i
ZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ1LDYg
KzU3LDIyIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdHRlciogZm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
IHVudW1mX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAo
Zm9ybWF0dGVyKQorICAgICAgICB1bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgor
CiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAg
c2l6ZV90IHNpemU7CkBAIC0yMTQsNiArMjQyLDU2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
CiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOwogfQogCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKKyAgICAgICAg
Y2FzZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAg
ICAgICAgcmV0dXJuICJpbmZpbml0eSJfczsKKyAgICAgICAgY2FzZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIi
X3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAidW5rbm93biJfczsKKyAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6CisgICAgICAg
IHJldHVybiAiZnJhY3Rpb24iX3M7CisgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJ
RUxEOgorICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5U
X1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAg
ICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVu
dE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJl
dHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOworICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFU
T1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CisgICAgY2FzZSBVTlVNX0NVUlJF
TkNZX0ZJRUxEOgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVU5VTV9Q
RVJDRU5UX0ZJRUxEOgorICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91
bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMK
KyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkg
PyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKKyAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoK
KyAgICAgICAgcmV0dXJuIHNpZ24gPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1Rf
RklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRpZgorICAgIC8vIFRoZXNl
IHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRo
ZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCisgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24n
dCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBh
biAidW5rbm93biIuCisgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6CisgICAgLy8gQW55IG5l
d2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0
IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuICJ1bmtub3duIl9zOworICAgIH0KKyAgICByZXR1cm4gInVua25vd24iX3M7Cit9CisK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewpAQCAtMzA5LDE0ICszODcsNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRp
b25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCisgICAgbV9yb3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwg
NTAwMCwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
c1tdID0geworICAgICAgICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwg
NTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudCA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1l
bnQgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChp
bnZhbGlkUm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1
LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1
MDAwIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3Jl
bWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVt
ZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwg
eyB7ICJhdXRvIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRl
Z2VyIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGlu
Z1plcm9EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJc
IiJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENv
bXBhY3REaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6
U2hvcnQgfSwgeyAibG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlz
cGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwor
ICAgIFVzZUdyb3VwaW5nIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVm
YXVsdFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5n
ID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3Jv
dXBpbmc6OkFsd2F5cywgVXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3Vw
aW5nOjpNaW4yIH0sIHsgImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJf
cywgVXNlR3JvdXBpbmc6OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0
cnVlLCBmYWxzZSwgXCJtaW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0
VXNlR3JvdXBpbmcpOworCisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3Bs
YXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIi
X3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdh
eXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVn
YXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwg
b3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2ln
bkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNpZ25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAi
bmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5
OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9
LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdh
eXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3Jv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91
bmRpbmdNb2RlOjpGbG9vciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01v
ZGU6OkV4cGFuZCB9LAorICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWls
IH0sCisgICAgICAgICAgICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
IH0sCisgICAgICAgICAgICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSwKKyAgICAgICAgICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVu
IH0KKyAgICAgICAgfSwgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJm
bG9vclwiLCBcImV4cGFuZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3Jc
IiwgXCJoYWxmRXhwYW5kXCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3Ry
aW5nKHJlc29sdmVkLmRhdGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRm
OCgpOwpAQCAtMzI5LDcgKzQ0Niw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1jZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpGbG9vcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1mbG9vciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhw
YW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5
IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0
NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWls
aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAg
Ly8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYg
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3
NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
Zmxvb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0zOTEsMjcgKzU0OSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9u
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgewor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsK
KyAgICAgICAgYXV0byBzdHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgMTA+PihtX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID49IHN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIjAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5n
LnNpemUoKSAtIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZv
cm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29u
ZmlndXJlIGFueXRoaW5nLgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4
LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2OSkgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
cHJlY2lzaW9uCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
ID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2ln
bmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBh
ZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNw
bGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0g
ICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJh
aWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2Cisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ2MiwyMCArNjY2LDU0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAg
ICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0
aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNj
OTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2
ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90
YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3Vz
ZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdy
b3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9u
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNv
bnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0dGVyID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4o
dW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVu
dW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0Vf
QVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19BUFBST1hJTUFURUxZLCBkYXRhTG9jYWxlV2l0
aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVO
VU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKQEAgLTUyOSwxMiArNzY3LDEzIEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2Vw
dFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxl
V2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Ns
b3NlPj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lv
bnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICByZXR1cm47CkBAIC01NTks
MTEgKzc5OCwyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJ
Q1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNp
bmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3Jv
dXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5
czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
R1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3Vz
ZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTU3
OCw3ICs4MzMsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbgogI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVy
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOwpAQCAtNTkzLDI5ICs4NDgsMjYgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24K
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwog
I2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCi1KU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFs
dWUpIGNvbnN0CitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LQotICAgIEFTU0VSVChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUkoKSk7Ci0g
ICAgYXV0byogcmF3U3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5n
LmNoYXJhY3RlcnM4KCkpOworICAgIHZhbHVlLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0
IGF1dG8mIHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gYnVmZmVyOwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQo
bV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRO
dW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVk
TnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKLSAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgp
LCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCBz
dHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQu
Il9zKTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKQEAgLTYyMywxMyAr
ODc1LDg5IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0gICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0
cik7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAjZW5kaWYKLSAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAg
ICBpZiAoc3RkOjppc25hbihzdGFydCkgfHwgc3RkOjppc25hbihlbmQpKQorICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgbnVtYmVycyBh
cmUgb3V0IG9mIHJhbmdlIl9zKTsKKworICAgIGlmIChlbmQgPCBzdGFydCkKKyAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2Vy
IHRoYW4gZW5kIl9zKTsKKworICAgIGlmIChzdGQ6OnNpZ25iaXQoZW5kKSAmJiBlbmQgPT0gMCAm
JiBzdGFydCA+PSAwKQorICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworCisgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0
cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4o
dW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdl
KG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUo
cmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0
aCwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBy
YW5nZSJfcyk7CisKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0
aCkpOworfQorCitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHN0YXJ0LCBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUmJiBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGFydC5udW1i
ZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5k
Lm51bWJlclR5cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikK
KyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFz
c2VkIG51bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisKKyAgICBzdGFydC5lbnN1cmVOb25E
b3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygp
OworCisgICAgZW5kLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0cmlu
ZyA9IGVuZC5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJh
bmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1h
dHRlci5nZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5k
U3RyaW5nLmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisK
KyAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdl
dCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBh
IHJhbmdlIl9zKTsKKworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciog
c3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKK30K
KyNlbmRpZgorCiBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzI3LDExICsxMDU1LDgxIEBA
IEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlz
cGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAgY2FzZSBT
aWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOwor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5lZ2F0aXZl
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3Vu
ZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBzd2l0Y2gg
KHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBy
ZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBy
ZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAg
IHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAg
ICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWw6Cisg
ICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVuYyJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAiaGFsZkV2
ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnRy
YWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9E
aXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAgIHJldHVy
biAic3RyaXBJZkludGVnZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3Vu
ZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9yZVByZWNp
c2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VH
cm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9z
KTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0
aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICsxMTYyLDIzIEBAIEpT
T2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1G
cmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rp
b25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50
RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7Cisg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNl
R3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91cGluZykpOwogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9u
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsK
ICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCiAgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3RE
aXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9j
b21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNp
Z25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIGpzTnVtYmVy
KG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpKSk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGlu
Z1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTc4MCw1MiArMTE4Nyw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVu
Y3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsK
IH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQot
ewotICAgIHN3aXRjaCAoZmllbGQpIHsKLSAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuICJuYW4iX3M7
Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
ImluZmluaXR5Il9zOwotICAgICAgICByZXR1cm4gImludGVnZXIiX3M7Ci0gICAgY2FzZSBVTlVN
X0ZSQUNUSU9OX0ZJRUxEOgotICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwotICAgIGNhc2Ug
VU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9z
OwotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgICAgIHJldHVybiAi
ZXhwb25lbnRTZXBhcmF0b3IiX3M7Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7Ci0gICAgY2FzZSBVTlVNX0VY
UE9ORU5UX0ZJRUxEOgotICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKLSAgICBj
YXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImdyb3Vw
Il9zOwotICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJjdXJy
ZW5jeSJfczsKLSAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgLy8gSWYgdGhl
IHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgotICAgICAgICAvLyBK
U1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCi0gICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51
bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7Ci0g
ICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFs
dWUpID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKLSNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCi0gICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKLSAgICAgICAg
cmV0dXJuICJ1bml0Il9zOwotICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgotICAgICAgICBy
ZXR1cm4gImNvbXBhY3QiX3M7Ci0jZW5kaWYKLSAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cg
dXAgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1h
dCBvcHRpb25zLgotICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBh
bnkgb2Yga25vd24gcGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgotICAg
IGNhc2UgVU5VTV9QRVJNSUxMX0ZJRUxEOgotICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8g
dGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFu
ICJ1bmtub3duIiBwYXJ0LgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAidW5rbm93biJf
czsKLSAgICB9Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOwotfQotCi12b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50
bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWU6Ok51bWJlclR5cGUgbnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IEludGxGaWVsZEl0ZXJhdG9yJiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1
bml0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04NjgsNyArMTIzMCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1cnJlbnRJ
bmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCAm
JiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKICAgICAgICAgICAgICsr
Y3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVy
YWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CisgICAgICAg
IGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxT
dHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhm
aWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOwogICAgICAgICBhdXRvIHBhcnRW
YWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRl
eCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtODk0LDcgKzEyNTYsNyBAQCBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsK
LSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7
CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51
bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2
YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKQEAgLTkxNSwxNiArMTI3Nyw2
MyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJh
dG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcoV1RGTW92ZShy
ZXN1bHQpKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRT
dHJpbmcsIGl0ZXJhdG9yLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2Jh
bE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZh
bHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywgaXRlcmF0b3Is
IHBhcnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0
dXJuIHBhcnRzOwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRv
JiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxk
UG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBv
c2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBv
cGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8
dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51
bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEoKSwg
c3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcs
IGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVzdWx0R2V0QWxs
RmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7
CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisg
ICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0lu
dGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUuc2lnbigpLCB2YWx1ZS5udW1iZXJU
eXBlKCksIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIHBhcnRzOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNh
ODU3ZGUuLjhlYmZiNGYxMzk2M2I2MGJmMDExZTk2ZWQ1ODIxOWQ1MjNkMDA3MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTM4
LDIwICszOCwxMDUgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCi0jaW5jbHVkZSA8dW5pY29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjaWYgIWRl
ZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2lmIFVfSUNVX1ZFUlNJ
T05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUiAxCisjZW5kaWYKICNlbmRpZgogCitzdHJ1Y3QgVU51bWJlckZvcm1hdHRlcjsKK3N0cnVj
dCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJbnRs
RmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZh
bnRFeHRlbnNpb25LZXkgOiB1aW50OF90OwogCi1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUg
OiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91
bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlv
bkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24g
fTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nUHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9y
ZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1
aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgSW50bE5vdGF0aW9uKTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
K3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqKTsKK307CisjZW5kaWYKKworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3Jt
YXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9OworI2VuZGlmCisKK2NsYXNzIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoSW50bE1hdGhlbWF0aWNhbFZh
bHVlKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE51bWJlclR5cGUgeyBJbnRlZ2VyLCBJbmZp
bml0eSwgTmFOLCB9OworICAgIHVzaW5nIFZhbHVlID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgQ1N0
cmluZz47CisKKyAgICBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBl
eHBsaWNpdCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1f
bnVtYmVyVHlwZShudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSkpCisgICAgICAgICwgbV9zaWdu
KHN0ZDo6c2lnbmJpdCh2YWx1ZSkpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7IH0K
KworICAgIGV4cGxpY2l0IEludGxNYXRoZW1hdGljYWxWYWx1ZShOdW1iZXJUeXBlIG51bWJlclR5
cGUsIGJvb2wgc2lnbiwgQ1N0cmluZyB2YWx1ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVt
YmVyVHlwZSkKKyAgICAgICAgLCBtX3NpZ24oc2lnbikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuc3VyZU5vbkRvdWJsZSgpCisgICAgeworICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fbnVtYmVyVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOdW1iZXJU
eXBlOjpJbnRlZ2VyOgorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBTdHJpbmc6Om51bWJlcihz
dGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKS5hc2NpaSgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92
YWx1ZSA9IENTdHJpbmcoIm5hbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBOdW1iZXJUeXBlOjpJbmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0g
Q1N0cmluZyhtX3NpZ24gPyAiLWluZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVy
VHlwZSBudW1iZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9v
bCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHRyeUdldERvdWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0
PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIGNvbnN0IENTdHJpbmcmIGdldFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6OmdldDxDU3RyaW5nPihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVt
YmVyVHlwZSBudW1iZXJUeXBlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6
TmFOOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIE51bWJlclR5cGU6OkluZmluaXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50
ZWdlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBO
dW1iZXJUeXBlOjpJbnRlZ2VyIH07CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZh
bHVlIG1fdmFsdWUgeyAwLjAgfTsKK307CisKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Tm9uRmluYWxPYmplY3Q7CkBAIC03NiwxNiArMTYxLDI0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCop
IGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0
aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNvbnN0
OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsg
RGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lkIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNvbnN0
IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0cmlu
ZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1
ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9y
JiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKQEAgLTk0LDYgKzE4Nyw4IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMg
SW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nUHJpb3JpdHlTdHJp
bmcoSW50bFJvdW5kaW5nVHlwZSk7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdChW
TSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNSw3
ICsyMDAsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFu
ZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90
IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkg
OiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDog
dWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNs
YXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFpl
cm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1plcm9EaXNwbGF5IDogdWlu
dDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBjbGFzcyBVc2VHcm91cGlu
ZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07CisgICAgZW51bSBjbGFz
cyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwgRmxvb3IsIEV4cGFuZCwgVHJ1bmMsIEhh
bGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhhbGZUcnVuYywgSGFsZkV2ZW4gfTsKIAog
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CkBAIC0x
MTMsMTQgKzIxMSwxNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJp
bmcoVW5pdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlT
dHJpbmcoQ29tcGFjdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdN
b2RlU3RyaW5nKFJvdW5kaW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGlu
Z1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJp
ZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0
ZXI8dW51bWZfY2xvc2U+OwotICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyID0gSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9u
dW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgogI2Vsc2UKLSAgICB1c2luZyBVTnVtYmVyRm9y
bWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+IG1fbnVtYmVyRm9ybWF0Owog
I2VuZGlmCiAKQEAgLTEzMyw2ICsyMzQsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzIHsgMyB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9Owor
ICAgIHVuc2lnbmVkIG1fcm91bmRpbmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHls
ZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNw
bGF5OwogICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsyNDIsOSBA
QCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9u
IG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkg
bV9zaWduRGlzcGxheTsKLSAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJh
aWxpbmdaZXJvRGlzcGxheSBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvIH07CisgICAgVXNlR3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5n
OjpBbHdheXMgfTsKKyAgICBSb3VuZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQgfTsKICAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsg
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmlu
ZGV4IDIzZDM4NjNkMTYwMDQzMWVmNzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLjVmZjQyY2RlYjQ0
ZGYxZDI0ZGYzZWJkZTJmZjYwZmMyNTAyOTNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcg
KzYxLDY5IEBAIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICgh
bWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7
Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUs
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywg
MjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBJbnRsUm91bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9w
dGlvbjxJbnRsUm91bmRpbmdQcmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1By
aW9yaXR5OjpBdXRvIH0sIHsgIm1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5
OjpNb3JlUHJlY2lzaW9uIH0sIHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9y
aXR5OjpMZXNzUHJlY2lzaW9uIH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIg
XCJhdXRvXCIsIFwibW9yZVByZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50
bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMs
IDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0
aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywg
MCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAh
PSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5p
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAg
ICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZp
bmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFj
dGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwg
MjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNv
bXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rp
b25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3Vu
ZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVl
ZEZkID0gKCFoYXNTZCAmJiBub3RhdGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJv
dW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAo
bmVlZFNkKSB7CisgICAgICAgIGlmIChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAy
MTsKICAgICAgICAgfQotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkg
ewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlw
ZTo6Q29tcGFjdFJvdW5kaW5nOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgewor
ICAgICAgICBpZiAoaGFzRmQpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRl
ZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25E
aWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGln
aXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRz
ID09IHVuZGVmaW5lZFZhbHVlKQorICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0
cyA9IHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OworICAgICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGlu
dGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0OwotICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7
CisgICAgICAgIGlmIChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpN
b3JlUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5k
aW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TGVzc1ByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMg
PSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0g
MTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7
CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CkBAIC0xMjgsNCArMTUwLDQ5
IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JP
bGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHVud3JhcEZvckxlZ2FjeUlu
dGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Z2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25zdHJ1Y3RvcigpKTsKIH0KIAorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQv
ZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGljYWx2YWx1ZQoraW5saW5lIEludGxNYXRoZW1h
dGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAo
YXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAg
IHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBudW1iZXIudmFsdWUoKSB9OworCisgICAg
SlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJlcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUg
PSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSAtPiBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAg
ICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkg
fTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICAg
ICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gSW50
bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAgICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6
TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAgICAgIGJpZ0ludC0+c2lnbigpLAorICAgICAg
ICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmIChwcmlt
aXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJ
bnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSkpOworCisg
ICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBwcmltaXRpdmUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhwcmltaXRpdmUpLT52
YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxP
YmplY3QsIHN0cmluZyk7CisgICAgaWYgKCFiaWdJbnQpCisgICAgICAgIHJldHVybiBJbnRsTWF0
aGVtYXRpY2FsVmFsdWUgeyBQTmFOIH07CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJpZ0ludFRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgYmlnSW50KSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjli
MTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0NmJlNzI4Li5jYmVmNjA5MDk5NzJkNmFjMmI2ZThk
ZmVkOWNkMDQ0NDYwNmYyMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzks
MTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsK
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFu
Z2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQK
ICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFw
KSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNSBAQCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigp
OworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJh
bmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1udW1iZXIt
Zm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYgKzk0LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBp
ZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewotICAgICAgICBkb3VibGUgdmFsdWUgPSBi
aWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAg
YXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2Jh
bE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3Qs
IHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRy
eUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgp
KSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFs
dWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQogCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEzNyw2ICsxMzIsMzggQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKIH0KIAor
I2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4K
KyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJG
b3JtYXQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFu
Z2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKworICAg
IEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisKKyAgICBpZiAoc3RhcnRWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMg
dW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2Jh
bE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJlciA9IHN0YXJ0LnRyeUdldERvdWJsZSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9IGVuZC50cnlHZXREb3VibGUoKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1h
dC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydE51bWJlci52YWx1ZSgpLCBlbmROdW1i
ZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgV1RG
TW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkpKTsKK30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE1MCwxMCArMTc3LDIwIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOwogCisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGlj
YWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2YWx1
ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgbnVt
YmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyNlbmRpZgog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKaW5kZXggNjE3NWY5ZGQwOTM3OTI5Zjhm
ZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMzN2Q2MGY2Njc4NDBiY2MwNGEzMjQ4M2JjZTBhNmE0
NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
CiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4
IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAxOTZlOGY0MTI0NjM2MWEuLjQxYzJiZmRmNmVlNTE1
YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTUxLDYgKzE1MSw0NSBAQCBSZXN1
bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxsYmFjazsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZh
bHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0
VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0VHlwZSBm
YWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJm
b3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2RpZmYuaHRtbCNzZWMtZ2V0c3RyaW5nb3Jib29sZWFu
b3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA+IDApOworCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrOworCisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCF2YWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSAmJiB2YWx1ZS5h
c0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlVmFsdWU7CisKKyAgICAgICAgYm9v
bCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlQm9v
bGVhbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzeVZhbHVlOworCisgICAgICAgIFN0cmluZyBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IHN0cmlu
Z1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5zZWNvbmQ7CisgICAgICAgIH0K
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5kTWVzc2FnZSkpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKworICAgIHJldHVybiBmYWxsYmFjazsKK30KIAogQUxXQVlTX0lOTElORSBib29s
IGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKFVDaGFyIGNoYXJhY3RlcikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4
IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYyYmZjM2QyOGEzNWU0ODkuLmU4MTQyNGJjOGEwNjk5
MmRkOGFkYzBmNjM1ZjBhOWM5Zjg1ZDVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMzIsOCArMzIsMjYgQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKIAorI2lm
ZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJCisjZW5kaWYKKyNp
bmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgor
I2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2Rl
L3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9EUkFGVF9B
UEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVy
YXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpCit7CisgICAgaWYgKHBsdXJhbFJ1bGVz
KQorICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Cit9CisKIGNvbnN0IENsYXNz
SW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9
OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47
CkBAIC0xMDcsOCArMTI1LDc4IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1
cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVt
YmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywg
SW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4o
VU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRy
LCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3Ry
aW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5p
Y29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1i
ZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyon
IDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2Yg
Ki4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsg
KytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2gg
KG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4i
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1f
bWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lv
bjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8v
IEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2Rl
LCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLgorICAgICAgICAvLyBTbywgaWYg
bGlua2VkIElDVSBpcyB+NjgsIHdlIGRvIG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6OklDVTo6
bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlm
ZDA0YTgzNjQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNwcmVjaXNpb24KKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJy8nKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1
cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAg
IG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVO
dW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBj
b252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0
YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1
cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExB
UFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51
bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UK
KyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9j
YWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUs
MTMgKzIxMywxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJl
Y2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxS
dWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUu
dXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JE
SU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVs
ZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1
cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5h
bCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJf
cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsyNDcsMTIgQEAgSlNPYmplY3QqIEludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVj
aXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlv
bkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdp
dHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0xODMsOCArMjc1LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3Jp
ZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZv
cm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5
LDEyICsyOTIsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAg
IGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIs
IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUi
X3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFs
dWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVw
bHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2Vs
ZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVm
ZmVyKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8g
bGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2
YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCks
ICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0
YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5n
ZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3Rh
dHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2Yg
cGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJl
clJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFs
IHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1f
cGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjliNzE4NGUw
YjRlNjEyMDZkMGIxYWNhMGZlY2ZjN2M2MmIxNDhkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMTYgQEAKIAog
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4K
LSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CisKIG5hbWVzcGFjZSBK
U0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOworfTsKKwogZW51bSBjbGFzcyBSZWxl
dmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTY0LDYgKzY5LDEwIEBAIGNsYXNzIElu
dGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU1Zh
bHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNP
YmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisjaWYgSEFW
RShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2Uo
SlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0OworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMsMTEgKzgyLDE2IEBAIGNsYXNzIEludGxQ
bHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0g
Y2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5hbCB9OwogCi0gICAgdXNpbmcgVVBs
dXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OwotICAgIHVzaW5n
IFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFs
UnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJG
b3JtYXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRl
ckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCisgICAgdXNp
bmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1i
ZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICB1bnNpZ25lZCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKaW5kZXggYzgw
YmZhMjIyM2ZkNTBlOGI5NzgxOGNlZDRiMDc1OGJiY2RlNmMyNy4uZWM2OWZlMjliYjIzOTgwYzY0
N2JhNGFmMDY0YjE4Njg3MTZhOWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICsz
Myw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCk7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
aW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlKTsKKyNlbmRpZgogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk7CiAKIH0KQEAgLTUwLDEwICs1MywxMCBAQCBjb25zdCBDbGFzc0luZm8g
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRsLlBsdXJhbFJ1bGVzIiwg
JkJhc2U6OgogQGVuZAogKi8KIAotSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBJbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCitJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU+
KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC02NywxMSArNzAs
MTUgQEAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNlbGVjdFJhbmdlLCBpbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDYgKzk5LDI3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2Vs
ZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdChnbG9iYWxPYmplY3QsIHZhbHVlKSkp
OwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtbnVtYmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWludGwucGx1
cmFscnVsZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCisgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVy
YWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGx1cmFsUnVsZXMpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1
cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUGx1cmFsUnVsZXMiX3MpKTsKKworICAgIGRvdWJsZSBzdGFydCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGVuZCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSku
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1
cmFsUnVsZXMtPnNlbGVjdFJhbmdlKGdsb2JhbE9iamVjdCwgc3RhcnQsIGVuZCkpKTsKK30KKyNl
bmRpZgorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5oCmluZGV4IDZmYWEzYTRmNzhhZWE1OTg0MzJjYjEzMDM3ZjEwMzU5MzYyNTA4
NGIuLjYxZTA4YjJmNGQyY2FiMDYzYzc1YzY5NzZjMWIzNjBmYWZlNWZkMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogcHJpdmF0ZToKICAgICBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKaW5kZXggMGI1OTY2MTJm
ZjhjMzVmMWExZGUyNGRjZjBjNzZlZTNkYWI4NGI1NS4uYzI1Mzg1MDBmYjhlMzQxN2NiZjFjNjA4
YWVkNTIxYjc1NGJlOWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBK
U1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YgogICAgICAgICB9CiAKICAgICAgICAgSW50bEZpZWxkSXRl
cmF0b3IgZmllbGRJdGVyYXRvcigqaXRlcmF0b3IuZ2V0KCkpOwotICAgICAgICBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9y
bWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVy
YXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgc3RkOjpzaWduYml0KGFi
c1ZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZShhYnNW
YWx1ZSksIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZt
LCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3
OC4uYjc2MzE2NzE0MTRjOTNjNWZkODQ0OTNjYzQ5YTNhMzc3NjI0ODE3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC00NjIsNiArNDYyLDggQEAgY2xhc3Mg
SlNCaWdJbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGhhc2hTbG93
KCk7CiAgICAgfQogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cnlFeHRyYWN0
RG91YmxlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIEpTQmlnSW50KFZNJiwgU3RydWN0dXJl
KiwgRGlnaXQqLCB1bnNpZ25lZCBsZW5ndGgpOwogCkBAIC02NzYsNCArNjc4LDQyIEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSB0cnlDb252ZXJ0VG9CaWdJbnQzMihKU0JpZ0ludCogYmlnSW50KQog
ICAgIHJldHVybiBiaWdJbnQ7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IEpTQmlnSW50Ojp0cnlFeHRyYWN0RG91YmxlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS5hc051bWJlcigpOworCisg
ICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiB2YWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKHZh
bHVlLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gdmFsdWUuYXNIZWFw
QmlnSW50KCk7CisgICAgaWYgKCFiaWdJbnQtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHVpbnQ2NF90IGludGVnZXIgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERp
Z2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdp
dCgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsK
KyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPiAyKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgaW50ZWdlciA9IGJpZ0ludC0+ZGlnaXQoMCk7CisgICAgICAg
IGlmIChiaWdJbnQtPmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICBpbnRlZ2VyIHw9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKworICAg
IGlmIChpbnRlZ2VyIDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhTYWZlSW50ZWdlcigpKSkK
KyAgICAgICAgcmV0dXJuIChiaWdJbnQtPnNpZ24oKSkgPyAtc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bnRlZ2VyKSA6IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcik7CisKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYz
Y2FjNDM2NmEwNjBmNmZjYjYyMS4uMTBmMTkzZjQ0MWQzOGRjNWQyZGFlODZkYzMyZjAzNThiYzkw
OWZjZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2Ut
djMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoc2hvdWxkTm90VGhyb3cpOgorICAgICAgICAobmYuZm9ybWF0UmFuZ2Uuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuZm9yRWFjaCk6CisgICAgICAgIChuZi5mb3JtYXRSYW5nZVRvUGFy
dHMudmFsaWRSYW5nZXMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LWZvcm1hdC1zdHJpbmctdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanM6CisgICAg
ICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC1yZXNvbHZl
ZC1tYXRjaC12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh2YWxp
ZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2gpOgorICAg
ICAgICAoaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKToKKyAgICAgICAgKiBzdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtcm91bmRpbmctbW9kZS10YWJsZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChPYmplY3Qua2V5cy5leHBlY3RhdGlvbnMuZm9yRWFjaCk6CisgICAgICAgICog
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodmFsaWRS
b3VuZGluZ01vZGUuZm9yRWFjaCk6CisgICAgICAgIChpbnZhbGlkUm91bmRpbmdNb2RlLmZvckVh
Y2gpOgorICAgICAgICAobGV0Lm9wdGlvbnMuZ2V0IHNpZ25EaXNwbGF5KToKKyAgICAgICAgKGxl
dC5vcHRpb25zLmdldCByb3VuZGluZ01vZGUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC1zaWduLWRpc3BsYXktdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXkt
cmVzb2x2ZWQtb3B0aW9ucy12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS12My5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbGlkVXNlR3JvdXBpbmcuZm9yRWFj
aCk6CisgICAgICAgIChpbnZhbGlkVXNlR3JvdXBpbmcuZm9yRWFjaCk6CisgICAgICAgIChhbGwu
Zm9yRWFjaCk6CisgICAgICAgIChtZ2QxLmZvckVhY2gpOgorICAgICAgICAobWdkMi5mb3JFYWNo
KToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanM6CisgICAgICAgICh0ZXN0
TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKHNob3VsZEJlLnRlc3ROdW1iZXJGb3JtYXQuSW50bC5O
dW1iZXJGb3JtYXQpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJh
bmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAyMS0xMC0yMyAgUGhpbGxp
cCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHVwZGF0ZSB0ZXN0MjYyCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2Uu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWFlZjA3MzkwNjA0NzNmMGI1YTU5Yjc5ZWFkODA5ZjEzMDllZmQ2MQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJn
ZS5qcwpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBu
ZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK2NvbnN0IHN0YXJ0ID0gOTg3NjU0
MzIxOTg3NjU0MzIxbjsKK2NvbnN0IGVuZCA9IDk4NzY1NDMyMTk4NzY1NDMyMm47CitzaG91bGRC
ZShuZi5mb3JtYXQoc3RhcnQpLCBgOTg3LDY1NCwzMjEsOTg3LDY1NCwzMjFgKTsKK2lmIChuZi5m
b3JtYXRSYW5nZSkKKyAgICBzaG91bGRCZShuZi5mb3JtYXRSYW5nZShzdGFydCwgZW5kKSwgYDk4
Nyw2NTQsMzIxLDk4Nyw2NTQsMzIx4oCTOTg3LDY1NCwzMjEsOTg3LDY1NCwzMjJgKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5q
cyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NDZlMWY4YjMyNTk5NDg2OWYzMTJiZDAwZDUwYzI0YzQ5ODA5YTgzCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXJh
bmdlLXYzLmpzCkBAIC0wLDAgKzEsMjE4IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAi
ICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlw
ZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3Ig
aW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
ICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCBnb3QgJHtTdHJpbmcoZXJyb3IpfSFgKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkTm90VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworY29uc3QgdmFs
aWRSYW5nZXMgPSBbWy0xMjM0NSwgLTU2NzhdLCBbLTEyMzQ1LCA1Njc4OV0sIFsxMjM0NSwgNTY3
ODldXTsKKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwge3NpZ25EaXNw
bGF5OiAiZXhjZXB0WmVybyJ9KTsKK2lmIChuZi5mb3JtYXRSYW5nZSkgeworICAgIFsnZm9ybWF0
UmFuZ2UnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkgeworICAgICAgICBzaG91bGRCZSgiZnVu
Y3Rpb24iLCB0eXBlb2YgbmZbbWV0aG9kXSk7CisKKyAgICAgICAgLy8gMi4gUGVyZm9ybSA/IFJl
cXVpcmVJbnRlcm5hbFNsb3QobmYsIFtbSW5pdGlhbGl6ZWROdW1iZXJGb3JtYXRdXSkuCisgICAg
ICAgIC8vIEFzc2VydCBpZiBjYWxsZWQgd2l0aG91dCBuZgorICAgICAgICBsZXQgZiA9IG5mW21l
dGhvZF07CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgZigxLCAyMykgfSwgVHlwZUVycm9y
KTsKKworICAgICAgICAvLyBBc3NlcnQgbm9ybWFsIGNhbGwgc3VjY2VzcworICAgICAgICBzaG91
bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEsIDIzKSk7CisKKyAgICAgICAgLy8gMy4gSWYg
c3RhcnQgaXMgdW5kZWZpbmVkIC4uLiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0odW5kZWZpbmVkLCAyMykgfSwgVHlw
ZUVycm9yKTsKKyAgICAgICAgLy8gMy4gSWYgLi4uIGVuZCBpcyB1bmRlZmluZWQsIHRocm93IGEg
VHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRo
b2RdKDEsIHVuZGVmaW5lZCkgfSwgVHlwZUVycm9yKTsKKworICAgICAgICAvLyA0LiBMZXQgeCBi
ZSA/IFRvTnVtZXJpYyhzdGFydCkuCisgICAgICAgIC8vIFZlcmlmeSBpdCB3b24ndCB0aHJvdyBl
cnJvcgorICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKG51bGwsIDIzKSk7
CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oZmFsc2UsIDIzKSk7Cisg
ICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0odHJ1ZSwgMjMpKTsKKyAgICAg
ICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgiMTIiLCAyMykpOworICAgICAgICBz
aG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKCItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwIiwgMjMpKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKFN5
bWJvbCgxMiksIDIzKSB9LCBUeXBlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZltt
ZXRob2RdKDEybiwgMjMpKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2Rd
KHt9LCAtMjMpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiB7
IG5mW21ldGhvZF0oW10sIDIzKSB9KTsKKworICAgICAgICAvLyA1LiBMZXQgeSBiZSA/IFRvTnVt
ZXJpYyhlbmQpLgorICAgICAgICAvLyBWZXJpZnkgaXQgd29uJ3QgdGhyb3cgZXJyb3IKKyAgICAg
ICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgtMTIsIG51bGwpKTsKKyAgICAgICAg
c2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgtMTIsIGZhbHNlKSk7CisgICAgICAgIHNo
b3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oLTEyLCB0cnVlKSk7CisgICAgICAgIHNob3Vs
ZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTIsICIyMyIpKTsKKyAgICAgICAgc2hvdWxkTm90
VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgIjIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
IikpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIsIFN5bWJvbCgy
MykpIH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhv
ZF0oMTIsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTIs
IDIzbikpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oLTEyLCB7fSkg
fSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZbbWV0aG9k
XSgtMTIsIFtdKSB9KTsKKworICAgICAgICAvLyA2LiBJZiB4IGlzIE5hTiAuLi4sIHRocm93IGEg
UmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0
aG9kXShOYU4sIDIzKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
eyBuZlttZXRob2RdKCJOYU4iLCAyMykgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIC8vIDYuIElm
IC4uLiB5IGlzIE5hTiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCBOYU4pIH0sIFJhbmdlRXJyb3IpOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIsICJOYU4iKSB9LCBSYW5nZUVy
cm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCAieHl6Iikg
fSwgUmFuZ2VFcnJvcik7CisKKyAgICAgICAgLy8gNy4gSWYgeCBpcyBhIG5vbi1maW5pdGUgTnVt
YmVyIC4uLiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkTm90
VGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMi8wLCAxMi8wKSB9KTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLzAsIC0xMi8wKSB9LCBSYW5nZUVycm9yKTsKKwor
ICAgICAgICAvLyA4LiBJZiB4IGlzIGdyZWF0ZXIgdGhhbiB5LCB0aHJvdyBhIFJhbmdlRXJyb3Ig
ZXhjZXB0aW9uLgorICAgICAgICAvLyBuZWl0aGVyIHggbm9yIHkgYXJlIGJpZ2ludC4KKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDIzLCAxMikgfSwgUmFuZ2VFcnJvcik7
CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTIsIDIzKSk7CisgICAg
ICAgIC8vIHggaXMgbm90IGJpZ2ludCBidXQgeSBpcy4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBuZlttZXRob2RdKDIzLCAxMm4pIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyM24pKTsKKyAgICAgICAgLy8geCBpcyBiaWdp
bnQgYnV0IHkgaXMgbm90LgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0o
MjNuLCAxMikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5m
W21ldGhvZF0oMTJuLCAyMykpOworICAgICAgICAvLyBib3RoIHggYW5kIHkgYXJlIGJpZ2ludC4K
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDIzbiwgMTJuKSB9LCBSYW5n
ZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMm4sIDIz
bikpOworCisgICAgICAgIHZhbGlkUmFuZ2VzLmZvckVhY2goCisgICAgICAgICAgICBmdW5jdGlv
bihbeCwgeV0pIHsKKyAgICAgICAgICAgICAgICBjb25zdCBYID0gQmlnSW50KHgpOworICAgICAg
ICAgICAgICAgIGNvbnN0IFkgPSBCaWdJbnQoeSk7CisgICAgICAgICAgICAgICAgY29uc3QgZm9y
bWF0dGVkX3hfeSA9IG5mW21ldGhvZF0oeCwgeSk7CisgICAgICAgICAgICAgICAgY29uc3QgZm9y
bWF0dGVkX1hfeSA9IG5mW21ldGhvZF0oWCwgeSk7CisgICAgICAgICAgICAgICAgY29uc3QgZm9y
bWF0dGVkX3hfWSA9IG5mW21ldGhvZF0oeCwgWSk7CisgICAgICAgICAgICAgICAgY29uc3QgZm9y
bWF0dGVkX1hfWSA9IG5mW21ldGhvZF0oWCwgWSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
Zm9ybWF0dGVkX3hfeSwgZm9ybWF0dGVkX1hfeSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
Zm9ybWF0dGVkX3hfeSwgZm9ybWF0dGVkX3hfWSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
Zm9ybWF0dGVkX3hfeSwgZm9ybWF0dGVkX1hfWSk7CisKKyAgICAgICAgICAgIH0pOworICAgIH0p
OworfQorCisvLyBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcnQgd2l0aCB0eXBlOiAicGx1c1NpZ24i
IGFuZCAibWludXNTaWduIiBhcmUgY29ycmUKK2lmIChuZi5mb3JtYXRSYW5nZVRvUGFydHMpIHsK
KyAgICB2YWxpZFJhbmdlcy5mb3JFYWNoKAorICAgICAgICBmdW5jdGlvbihbeCwgeV0pIHsKKyAg
ICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUGx1cyA9ICh4ID4gMCkgPyAoKHkgPiAwKSA/IDIgOiAx
KSA6ICgoeSA+IDApID8gMSA6IDApOworICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRNaW51cyA9
ICh4IDwgMCkgPyAoKHkgPCAwKSA/IDIgOiAxKSA6ICgoeSA8IDApID8gMSA6IDApOworICAgICAg
ICAgICAgbGV0IGFjdHVhbFBsdXMgPSAwOworICAgICAgICAgICAgbGV0IGFjdHVhbE1pbnVzID0g
MDsKKyAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gbmYuZm9ybWF0UmFuZ2VUb1BhcnRzKHgsIHkp
OworICAgICAgICAgICAgcGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0KSB7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcnQudHlwZSA9PSAicGx1c1NpZ24iKSBhY3R1YWxQbHVzKys7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcnQudHlwZSA9PSAibWludXNTaWduIikgYWN0dWFsTWludXMrKzsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gImZvcm1hdFJhbmdlVG9Q
YXJ0cygiICsgeCArICIsICIgKyB5ICsgIik6ICI7CisgICAgICAgICAgICBzaG91bGRCZShleHBl
Y3RlZFBsdXMsIGFjdHVhbFBsdXMsCisgICAgICAgICAgICAgICAgbWV0aG9kICsgIk51bWJlciBv
ZiB0eXBlOiAncGx1c1NpZ24nIGluIHBhcnRzIGlzIGluY29ycmVjdCIpOworICAgICAgICAgICAg
c2hvdWxkQmUoZXhwZWN0ZWRNaW51cywgYWN0dWFsTWludXMsCisgICAgICAgICAgICAgICAgbWV0
aG9kICsgIk51bWJlciBvZiB0eXBlOiAnbWludXNTaWduJyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3Qi
KTsKKyAgICAgICAgfSk7Cit9CisKKy8vIEZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJv
cG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMjZm9ybWF0cmFuZ2UtZWNtYS00MDItMzkzCitjb25z
dCBuZjIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIiwgeworICAgIHN0eWxlOiAiY3Vy
cmVuY3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDAsCit9KTsKKworLy8gUkVBRE1FLm1kIHNhaWQgaXQgZXhwZWN0ICLigqwz4oCTNSIKK3Nob3Vs
ZEJlKCLigqwzIOKAkyDigqw1IiwgbmYyLmZvcm1hdFJhbmdlKDMsIDUpKTsKKworY29uc3QgbmYz
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5
IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAor
fSk7CitpZiAobmYzLmZvcm1hdFJhbmdlVG9QYXJ0cykgeworICAgIGNvbnN0IGFjdHVhbDMgPSBu
ZjMuZm9ybWF0UmFuZ2VUb1BhcnRzKDMsIDUpOworICAgIC8qCisgICAgWworICAgICAge3R5cGU6
ICJjdXJyZW5jeSIsIHZhbHVlOiAi4oKsIiwgc291cmNlOiAic3RhcnRSYW5nZSJ9CisgICAgICB7
dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjMiLCBzb3VyY2U6ICJzdGFydFJhbmdlIn0KKyAgICAg
IHt0eXBlOiAibGl0ZXJhbCIsIHZhbHVlOiAi4oCTIiwgc291cmNlOiAic2hhcmVkIn0KKyAgICAg
IHt0eXBlOiAiaW50ZWdlciIsIHZhbHVlOiAiNSIsIHNvdXJjZTogImVuZFJhbmdlIn0KKyAgICBd
CisgICAgKi8KKyAgICBzaG91bGRCZSg1LCBhY3R1YWwzLmxlbmd0aCk7CisgICAgc2hvdWxkQmUo
ImN1cnJlbmN5IiwgYWN0dWFsM1swXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFs
M1swXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzBdLnNvdXJj
ZSk7CisgICAgc2hvdWxkQmUoImludGVnZXIiLCBhY3R1YWwzWzFdLnR5cGUpOworICAgIHNob3Vs
ZEJlKCIzIiwgYWN0dWFsM1sxXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBh
Y3R1YWwzWzFdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImxpdGVyYWwiLCBhY3R1YWwzWzJdLnR5
cGUpOworICAgIHNob3VsZEJlKCIg4oCTICIsIGFjdHVhbDNbMl0udmFsdWUpOworICAgIHNob3Vs
ZEJlKCJzaGFyZWQiLCBhY3R1YWwzWzJdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5
IiwgYWN0dWFsM1szXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1szXS52YWx1
ZSk7CisgICAgc2hvdWxkQmUoImVuZFJhbmdlIiwgYWN0dWFsM1szXS5zb3VyY2UpOworICAgIHNo
b3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1s0XS50eXBlKTsKKyAgICBzaG91bGRCZSgiNSIsIGFj
dHVhbDNbNF0udmFsdWUpOworICAgIHNob3VsZEJlKCJlbmRSYW5nZSIsIGFjdHVhbDNbNF0uc291
cmNlKTsKK30KKworY29uc3QgbmY0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsK
KyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11
bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitzaG91bGRCZSgifuKCrDMiLCBuZjQuZm9ybWF0UmFu
Z2UoMi45LCAzLjEpKTsKKworY29uc3QgbmY1ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1V
UyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAg
c2lnbkRpc3BsYXk6ICJhbHdheXMiLAorfSk7CitzaG91bGRCZSgifivigqwzLjAwIiwgbmY1LmZv
cm1hdFJhbmdlKDIuOTk5LCAzLjAwMSkpOworCitjb25zdCBuZjYgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoImVuIik7CitzaG91bGRCZSgiM+KAk+KIniIsIG5mNi5mb3JtYXRSYW5nZSgzLCAxLzAp
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmY2LmZvcm1hdFJhbmdlKDMsIDAvMCk7IH0sIFJhbmdl
RXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9y
bWF0LXN0cmluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1h
dC1zdHJpbmctdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZDkyZGMzMTAwNmUzMWQyOTlhZTg0OTAyODMy
ZWFhMGM3MzU0NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0
IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9IG5ldyBJbnRs
Lk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK2NvbnN0IHN0cmluZyA9ICI5ODc2NTQzMjE5ODc2NTQz
MjEiOworY29uc3Qgc3RyaW5nMiA9ICI5ODc2NTQzMjE5ODc2NTQzMjIiOworc2hvdWxkQmUobmYu
Zm9ybWF0KHN0cmluZyksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5mLmZvcm1h
dFJhbmdlKQorICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKHN0cmluZywgc3RyaW5nMiksIGA5
ODcsNjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMK
aW5kZXggZWY3MWYwZjFjNmM1NDFkZmE5YmMzNDQxYWExYjNmNDA3Y2Q1ZTgwMy4uY2NmOTdlYzI0
MTU2ZGQyZDRkMmM5YTA1ZjI0NGJjNWJkODYzNjQ1MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcwpAQCAtNTcsMyArNTcsMzUg
QEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogc2hvdWxkQmUoSW50bC5O
dW1iZXJGb3JtYXQoJ2VuLVVTJywgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9ybWF0VG9QYXJ0
cyhOdW1iZXIuTUFYX1ZBTFVFKS5sZW5ndGgsIDEpOwogc2hvdWxkQmUoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuLVVTJywgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9ybWF0VG9QYXJ0cyhOdW1iZXIu
TUFYX1ZBTFVFKVswXS52YWx1ZS5sZW5ndGgsIDMwOSk7CiBzaG91bGRCZShJbnRsLk51bWJlckZv
cm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpLmxlbmd0aCwgMjA1
KTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVy
Rm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoNDAwMG4pCisgICAgKSwKKyAgICBKU09OLnN0
cmluZ2lmeShbCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAg
ICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdl
ciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5n
aWZ5KAorICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKC00
MDAwbikKKyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoibWlu
dXNTaWduIiwidmFsdWUiOiItIn0sCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6
IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0
eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7CisKK3Nob3VsZEJlKAorICAg
IEpTT04uc3RyaW5naWZ5KAorICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3Jt
YXRUb1BhcnRzKCItNDAwMCIpCisgICAgKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAg
IHsidHlwZSI6Im1pbnVzU2lnbiIsInZhbHVlIjoiLSJ9LAorICAgICAgICB7InR5cGUiOiJpbnRl
Z2VyIiwidmFsdWUiOiI0In0sCisgICAgICAgIHsidHlwZSI6Imdyb3VwIiwidmFsdWUiOiIsIn0s
CisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjAwMCJ9CisgICAgXSkpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVt
ZW50LXJlc29sdmVkLW1hdGNoLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtcm91bmRpbmctaW5jcmVtZW50LXJlc29sdmVkLW1hdGNoLXYzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
NjE4Y2U5YjBlZmEzMjVmMjYwNWY3NmVlNTZjZDQxMjc2OGQ5NTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVz
b2x2ZWQtbWF0Y2gtdjMuanMKQEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgdmFsaWRSb3VuZGluZ0luY3JlbWVudHMg
PSBbCisgIDEsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIw
MDAsIDI1MDAsIDUwMDAKK107CisKK3ZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2goZnVu
Y3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50fSk7CisgIHNob3VsZEJlKHJvdW5kaW5n
SW5jcmVtZW50LCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ0luY3JlbWVudCk7Cit9KTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWlu
Y3JlbWVudC12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5n
LWluY3JlbWVudC12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWJjMmE1ZTNmZmU0ODlmZmZmMjBlNTAyNWU0
ZWY0ZTZmM2Q1NmVlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8vIENv
cHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBDb3B5cmlnaHQgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8g
ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAg
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7
CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0
YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtl
cnJvclR5cGUubmFtZX0hYCk7Cit9CisKKworbGV0IHZhbGlkUm91bmRpbmdJbmNyZW1lbnRzID0g
WworICAxLCAyLCA1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMAorXTsKKworbGV0
IGludmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBbCisgIC0xLCAtNSwgMCwgMTAwMSwgMTEwMCwg
NTUwMCwgMjAwMDAwLCA1MDAwMDUsIDEwMDAwMDAwLCAxMDAwMCwgNTAwMDAsIDEwMDAwMCwgNTAw
MDAwLCAxMDAwMDAwLAorICA1MDAwMDAwCitdOworCit2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5m
b3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5jcmVtZW50KSB7CisgICAgbmV3IEludGwuTnVtYmVy
Rm9ybWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50fSk7Cit9KTsKKworaW52YWxpZFJv
dW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5jcmVtZW50KSB7Cisg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVk
LCB7cm91bmRpbmdJbmNyZW1lbnR9KQorICB9LCBSYW5nZUVycm9yKTsKK30pOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZh
bHVlLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5j
cmVtZW50LXZhbHVlLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZjI2OGQ5ODZjMTZlM2Y0OTdhZjM4NDU4
ZmVlZDg5MDlkMjY0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdmFsdWUtdjMuanMKQEAgLTAsMCArMSw0OSBA
QAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAg
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQor
CitsZXQgcGVubnkgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNy
ZW1lbnQ6IDEgfSk7CitsZXQgbmlja2VsID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJl
biIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IHJvdW5kaW5nSW5jcmVtZW50OiA1IH0pOworbGV0IGRpbWUgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoCisgICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlv
bkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEwIH0pOworCisvLyBodHRwczovL25lY3Mu
Y29tL2tub3dsZWRnZWJhc2Uvc3lzcHJlZnNfcHJjX21vZF9yb3VuZG1ldGguaHRtCitzaG91bGRC
ZSgiMTAuMTUiLCBwZW5ueS5mb3JtYXQoMTAuMTU0KSk7CitzaG91bGRCZSgiMTAuMTYiLCBwZW5u
eS5mb3JtYXQoMTAuMTU1KSk7CitzaG91bGRCZSgiMTAuMTAiLCBuaWNrZWwuZm9ybWF0KDEwLjEy
NCkpOworc2hvdWxkQmUoIjEwLjE1Iiwgbmlja2VsLmZvcm1hdCgxMC4xMjUpKTsKK3Nob3VsZEJl
KCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NCkpOworLy8gbWlzdGFrZSBpbiB0aGUgYWJvdmUg
cGFnZSwgdGhlIHJlc3VsdCBzaG91bGQgYmUgMTAuNDAgbm90IDEwLjUwCitzaG91bGRCZSgiMTAu
NDAiLCBkaW1lLmZvcm1hdCgxMC40NDUpKTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0
KDEwLjQ0NSkpOworc2hvdWxkQmUoIjEwLjUwIiwgZGltZS5mb3JtYXQoMTAuNDUpKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdGFi
bGUtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2Rl
LXRhYmxlLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjYjczNDNlYWQxZjM5NTcyODgwYThiMGU0MzY5Y2Y5
N2ZhZjc0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC1yb3VuZGluZy1tb2RlLXRhYmxlLXYzLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHly
aWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAor
Ly8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisv
LyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkICsgIiAiICsg
bWVzc2FnZSk7Cit9CisKKy8vIENoZWNrIHRoZSByb3VuZGluZyBiZWhhdmlvci4KKy8vIEJhc2Vk
IG9uIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbnVt
YmVyZm9ybWF0L2RpZmYuaHRtbCN0YWJsZS1pbnRsLXJvdW5kaW5nLW1vZGVzCitsZXQgaW5wdXRz
ID0gWy0xLjUsIDAuNCwgMC41LCAwLjYsIDEuNV07CitsZXQgZXhwZWN0YXRpb25zID0geworICAi
Y2VpbCI6ICAgICAgIFsiLTEiLCAiMSIsICIxIiwgIjEiLCAiMiJdLAorICAiZmxvb3IiOiAgICAg
IFsiLTIiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAiZXhwYW5kIjogICAgIFsiLTIiLCAiMSIs
ICIxIiwgIjEiLCAiMiJdLAorICAidHJ1bmMiOiAgICAgIFsiLTEiLCAiMCIsICIwIiwgIjAiLCAi
MSJdLAorICAiaGFsZkNlaWwiOiAgIFsiLTEiLCAiMCIsICIxIiwgIjEiLCAiMiJdLAorICAiaGFs
ZkZsb29yIjogIFsiLTIiLCAiMCIsICIwIiwgIjEiLCAiMSJdLAorICAiaGFsZkV4cGFuZCI6IFsi
LTIiLCAiMCIsICIxIiwgIjEiLCAiMiJdLAorICAiaGFsZlRydW5jIjogIFsiLTEiLCAiMCIsICIw
IiwgIjEiLCAiMSJdLAorICAiaGFsZkV2ZW4iOiAgIFsiLTIiLCAiMCIsICIwIiwgIjEiLCAiMiJd
LAorfTsKK09iamVjdC5rZXlzKGV4cGVjdGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbihyb3VuZGlu
Z01vZGUpIHsKKyAgbGV0IGV4cCA9IGV4cGVjdGF0aW9uc1tyb3VuZGluZ01vZGVdOworICBsZXQg
aWR4ID0gMDsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtyb3VuZGlu
Z01vZGUsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMH0pOworICBzaG91bGRCZShyb3VuZGluZ01v
ZGUsIG5mLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSk7CisgIGlucHV0cy5mb3JFYWNo
KGZ1bmN0aW9uKGlucHV0KSB7CisgICAgbGV0IG1zZyA9ICJpbnB1dDogIiArIGlucHV0ICsgIiB3
aXRoIHJvdW5kaW5nTW9kZTogIiArIHJvdW5kaW5nTW9kZTsKKyAgICBpZiAoJHZtLmljdVZlcnNp
b24oKSA+PSA2OSkKKyAgICAgICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0
KSwgbXNnKTsKKyAgICBlbHNlIGlmIChyb3VuZGluZ01vZGUgIT09ICJoYWxmQ2VpbCIgJiYgcm91
bmRpbmdNb2RlICE9PSAiaGFsZkZsb29yIikKKyAgICAgICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwg
bmYuZm9ybWF0KGlucHV0KSwgbXNnKTsKKyAgICBlbHNlCisgICAgICAgIG5mLmZvcm1hdChpbnB1
dCkgLy8gc2hvdWxkIG5vdCB0aHJvdy4KKyAgfSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12My5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2
ODU2ODM4ZjUzOTQ1MzE1ZGMzNmU0YzU0ODFhMmRhMmNjMjdiMAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKQEAg
LTAsMCArMSwxMDEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAg
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4
cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkUm91bmRpbmdN
b2RlID0gWworICAgICJjZWlsIiwKKyAgICAiZmxvb3IiLAorICAgICJleHBhbmQiLAorICAgICJo
YWxmQ2VpbCIsCisgICAgImhhbGZFeHBhbmQiLAorICAgICJoYWxmRmxvb3IiLAorICAgICJoYWxm
VHJ1bmMiLAorICAgICJoYWxmRXZlbiIsCisgICAgInRydW5jIiwKK107CisKK2xldCBpbnZhbGlk
Um91bmRpbmdNb2RlID0gWworICAgICJjZWlsaW5nIiwKKyAgICAiZG93biIsCisgICAgIkRvd24i
LAorICAgICJmbG9vcmluZyIsCisgICAgImhhbGZEb3duIiwKKyAgICAiaGFsZlVwIiwKKyAgICAi
aGFsZnVwIiwKKyAgICAiaGFsZmV2ZW4iLAorICAgICJoYWxmZG93biIsCisgICAgImhhbGYtdXAi
LAorICAgICJoYWxmLWV2ZW4iLAorICAgICJoYWxmLWRvd24iLAorICAgICJ1cCIsCisgICAgIlVw
IiwKK107CisKK3ZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdNb2Rl
KSB7CisgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3VuZGlu
Z01vZGV9KTsKKyAgc2hvdWxkQmUocm91bmRpbmdNb2RlLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5y
b3VuZGluZ01vZGUpOworfSk7CisKK2ludmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaChmdW5jdGlv
bihyb3VuZGluZ01vZGUpIHsKKyAgc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBuZiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3VuZGluZ01vZGV9KTsgfSwgYFJhbmdl
RXJyb3I6IHJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciAiY2VpbCIsICJmbG9vciIsICJleHBh
bmQiLCAidHJ1bmMiLCAiaGFsZkNlaWwiLCAiaGFsZkZsb29yIiwgImhhbGZFeHBhbmQiLCAiaGFs
ZlRydW5jIiwgb3IgImhhbGZFdmVuImApOworfSk7CisKKy8vIENoZWNrIGRlZmF1bHQgaXMgImhh
bGZFeHBhbmQiCitzaG91bGRCZSgiaGFsZkV4cGFuZCIsIChuZXcgSW50bC5OdW1iZXJGb3JtYXQo
KS5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpKTsKK3Nob3VsZEJlKCJoYWxmRXhwYW5k
IiwgKG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICB1bmRlZmluZWQsIHtyb3VuZGluZ01vZGU6
IHVuZGVmaW5lZH0pLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSkpOworCisvLyBDaGVj
ayByb3VuZGluZ01vZGUgaXMgcmVhZCBvbmNlIGFmdGVyIHJlYWRpbmcgc2lnbkRpc3BsYXkKKwor
bGV0IHJlYWQgPSBbXTsKK2xldCBvcHRpb25zID0geworICBnZXQgc2lnbkRpc3BsYXkoKSB7IHJl
YWQucHVzaCgnc2lnbkRpc3BsYXknKTsgcmV0dXJuIHVuZGVmaW5lZDsgfSwKKyAgZ2V0IHJvdW5k
aW5nTW9kZSgpIHsgcmVhZC5wdXNoKCdyb3VuZGluZ01vZGUnKTsgcmV0dXJuIHVuZGVmaW5lZDsg
fSwKK307CisKK25ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIG9wdGlvbnMpOworc2hv
dWxkQmUoInNpZ25EaXNwbGF5LHJvdW5kaW5nTW9kZSIsIHJlYWQuam9pbigiLCIpKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXNpZ24tZGlzcGxheS12My5q
cyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXNpZ24tZGlzcGxheS12My5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNWNiNGM1MTRiYzNiMTE1NDM5ZGFlZDExN2JmNDBlMmE3NjQzODgyCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNw
bGF5LXYzLmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCArICIgIiArIGV4cGVjdGVkKTsKK30KKworLy8gVGVzdCBkZWZhdWx0LgorbGV0IG5mID0gbmV3
IEludGwuTnVtYmVyRm9ybWF0KCk7CitzaG91bGRCZSgiYXV0byIsIG5mLnJlc29sdmVkT3B0aW9u
cygpLnNpZ25EaXNwbGF5KTsKKworbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIik7Citz
aG91bGRCZSgiYXV0byIsIG5mLnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKworY29u
c3QgdGVzdERhdGEgPSBbCisgICAgWyJhdXRvIiwgICAgICAgICItMTIzIiwgICItMCIsICAiMCIs
ICAiMTIzIl0sCisgICAgWyJhbHdheXMiLCAgICAgICItMTIzIiwgICItMCIsICIrMCIsICIrMTIz
Il0sCisgICAgWyJuZXZlciIsICAgICAgICIxMjMiLCAgICIwIiwgICIwIiwgICIxMjMiXSwKKyAg
ICBbImV4Y2VwdFplcm8iLCAgIi0xMjMiLCAgIjAiLCAgIjAiLCAgIisxMjMiXSwKKyAgICBbIm5l
Z2F0aXZlIiwgICAgIi0xMjMiLCAgIjAiLCAgIjAiLCAgIjEyMyJdLAorXTsKKworZm9yIChjb25z
dCBbc2lnbkRpc3BsYXksIG5lZywgbmVnWmVybywgemVybywgcG9zXSBvZiB0ZXN0RGF0YSkgewor
ICBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7c2lnbkRpc3BsYXl9KTsKKyAgc2hv
dWxkQmUoc2lnbkRpc3BsYXksIG5mLnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKyAg
c2hvdWxkQmUobmVnLCBuZi5mb3JtYXQoLTEyMykpOworICBpZiAoJHZtLmljdVZlcnNpb24oKSA+
PSA2OSkKKyAgICAgIHNob3VsZEJlKG5lZ1plcm8sIG5mLmZvcm1hdCgtMCkpOworICBzaG91bGRC
ZSh6ZXJvLCBuZi5mb3JtYXQoMCkpOworICBzaG91bGRCZShwb3MsIG5mLmZvcm1hdCgxMjMpKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5n
LXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMtdjMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzlhZTNmYjBkZjllMzZiZjU5MDRhMmQ3MzkzMTM5YzYzNTU0ZjJmNAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWls
aW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpzCkBAIC0wLDAgKzEsNDUgQEAK
Ky8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKwor
bGV0IGRlZmF1bHRGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pOworbGV0IGF1
dG9GbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlv
bkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgdHJhaWxpbmdaZXJv
RGlzcGxheTogJ2F1dG8nfSk7CitsZXQgc3RyaXBJZkludGVnZXJGbXQgPSBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAyLAorICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ3N0cmlwSWZJbnRl
Z2VyJ30pOworCitzaG91bGRCZSgiYXV0byIsIGRlZmF1bHRGbXQucmVzb2x2ZWRPcHRpb25zKCku
dHJhaWxpbmdaZXJvRGlzcGxheSk7CitzaG91bGRCZSgiYXV0byIsIGF1dG9GbXQucmVzb2x2ZWRP
cHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxheSk7CitzaG91bGRCZSgic3RyaXBJZkludGVnZXIi
LAorICAgIHN0cmlwSWZJbnRlZ2VyRm10LnJlc29sdmVkT3B0aW9ucygpLnRyYWlsaW5nWmVyb0Rp
c3BsYXkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJh
aWxpbmctemVyby1kaXNwbGF5LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ODU1YWIwN2U3Yzg1
Nzc3M2Q5NTBhOGQyOWYwOTNkNWRmMDRhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanMKQEAgLTAs
MCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0
ZWQpOworfQorCitsZXQgZGVmYXVsdEZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAor
ICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIg
fSk7CitsZXQgYXV0b0ZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICB0
cmFpbGluZ1plcm9EaXNwbGF5OiAnYXV0byd9KTsKK2xldCBzdHJpcElmSW50ZWdlckZtdCA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAy
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAn
c3RyaXBJZkludGVnZXInfSk7CisKK3Nob3VsZEJlKCIzLjE0IiwgZGVmYXVsdEZtdC5mb3JtYXQo
My4xNDExKSk7CitzaG91bGRCZSgiMy4xNCIsIGF1dG9GbXQuZm9ybWF0KDMuMTQxMSkpOworc2hv
dWxkQmUoIjMuMTQiLCBzdHJpcElmSW50ZWdlckZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRC
ZSgiMy4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4wMCIs
IGF1dG9GbXQuZm9ybWF0KDMuMDAxNDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkK
KyAgICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgzLjAwMTQxMSkpOwor
ZWxzZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDMuMDAx
NDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDIuOTk5NDExKSk7Citz
aG91bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDIuOTk5NDExKSk7CitpZiAoJHZtLmljdVZl
cnNpb24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1h
dCgyLjk5OTQxMSkpOworZWxzZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJG
bXQuZm9ybWF0KDIuOTk5NDExKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZGU2NDdhODg5OWI2YjUxNjhi
ZmI1ZGVmZTM1OTZiZTEzZjZjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qcwpAQCAtMCwwICsxLDE1NSBAQAorLy8g
Q29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworbGV0IHZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1pbjIiLAorICAgICJhdXRvIiwKKyAg
ICAiYWx3YXlzIiwKKyAgICBmYWxzZSwKK107CisKK2xldCBpbnZhbGlkVXNlR3JvdXBpbmcgPSBb
CisgICAgIm1pbi0yIiwKKyAgICAidHJ1ZSIsCitdOworCit2YWxpZFVzZUdyb3VwaW5nLmZvckVh
Y2goZnVuY3Rpb24odXNlR3JvdXBpbmcpIHsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nfSk7CisgIHNob3VsZEJlKHVzZUdyb3VwaW5nLCBu
Zi5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7Cit9KTsKKworaW52YWxpZFVzZUdyb3Vw
aW5nLmZvckVhY2goZnVuY3Rpb24odXNlR3JvdXBpbmcpIHsKKyAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91
cGluZ30pOyB9LCBgUmFuZ2VFcnJvcjogdXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwg
ZmFsc2UsICJtaW4yIiwgImF1dG8iLCBvciAiYWx3YXlzImApOworfSk7CisKKy8vIHVzZUdyb3Vw
aW5nOiB1bmRlZmluZWQgZ2V0ICJhdXRvIgorc2hvdWxkQmUoImF1dG8iLAorICAgIChuZXcgSW50
bC5OdW1iZXJGb3JtYXQoKSkucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworc2hvdWxk
QmUoImF1dG8iLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3Jv
dXBpbmc6IHVuZGVmaW5lZH0pKQorICAgICAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBp
bmcpOworCisvLyB1c2VHcm91cGluZzogdHJ1ZSBnZXQgImFsd2F5cyIKK3Nob3VsZEJlKCJhbHdh
eXMiLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6
IHRydWV9KSkKKyAgICAgICAgLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKKworLy8g
dXNlR3JvdXBpbmc6IGZhbHNlIGdldCBmYWxzZQorLy8gdXNlR3JvdXBpbmc6ICIiIGdldCBmYWxz
ZQorc2hvdWxkQmUoZmFsc2UsCisgICAgKG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQs
IHt1c2VHcm91cGluZzogZmFsc2V9KSkKKyAgICAgICAgLnJlc29sdmVkT3B0aW9ucygpLnVzZUdy
b3VwaW5nKTsKK3Nob3VsZEJlKGZhbHNlLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5k
ZWZpbmVkLCB7dXNlR3JvdXBpbmc6ICIifSkpCisgICAgICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51
c2VHcm91cGluZyk7CisKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3Vw
aW5nRGlnaXRzCitsZXQgbWdkMSA9IFsiZW4iXTsKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1
bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzeyIyIn0KK2xldCBtZ2QyID0gWyJlcyIsICJwbCIsICJs
diIsICJldCIsICJiZyJdOworbGV0IGFsbCA9IG1nZDEuY29uY2F0KG1nZDIpOworCisvLyBDaGVj
ayAiYWx3YXlzIgorYWxsLmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBvZmYgPSBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6IGZhbHNlfSk7CisgIGxl
dCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogZmFsc2UiOworICAv
LyBJbiB1c2VHcm91cGluZzogZmFsc2UsIG5vIGdyb3VwaW5nLgorICBzaG91bGRCZSgzLCBvZmYu
Zm9ybWF0KDEyMykubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg0LCBvZmYuZm9ybWF0KDEyMzQp
Lmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSwgb2ZmLmZvcm1hdCgxMjM0NSkubGVuZ3RoLCBt
c2cpOworICBzaG91bGRCZSg2LCBvZmYuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBz
aG91bGRCZSg3LCBvZmYuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworCisvLyBD
aGVjayBmYWxzZQorYWxsLmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBhbHdheXMg
PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJhbHdheXMifSk7
CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ2Fsd2F5
cyciOworICBzaG91bGRCZSgzLCBhbHdheXMuZm9ybWF0KDEyMykubGVuZ3RoKTsKKyAgLy8gSW4g
dXNlR3JvdXBpbmc6ICJhbHdheXMiLCBoYXMgZ3JvdXBpbmcgd2hlbiBtb3JlIHRoYW4gMyBkaWdp
dHMuLgorICBzaG91bGRCZSg0ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7
CisgIHNob3VsZEJlKDUgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7Cisg
IHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBz
aG91bGRCZSg3ICsgMiwgYWx3YXlzLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsK
KworLy8gQ2hlY2sgIm1pbjIiCithbGwuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgbGV0
IGFsd2F5cyA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogIm1p
bjIifSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzog
J21pbjInIjsKKyAgc2hvdWxkQmUoMywgYWx3YXlzLmZvcm1hdCgxMjMpLmxlbmd0aCk7CisgIC8v
IEluIHVzZUdyb3VwaW5nOiAibWluMiIsIG5vIGdyb3VwaW5nIGZvciA0IGRpZ2l0cyBidXQgaGFz
IGdyb3VwaW5nCisgIC8vIHdoZW4gbW9yZSB0aGFuIDQgZGlnaXRzLi4KKyAgc2hvdWxkQmUoNCwg
YWx3YXlzLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDUgKyAxLCBhbHdh
eXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMu
Zm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwgYWx3YXlzLmZv
cm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsKKworLy8gQ2hlY2sgImF1dG8iCittZ2Qx
LmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBhdXRvID0gbmV3IEludGwuTnVtYmVy
Rm9ybWF0KGxvY2FsZSwge3VzZUdyb3VwaW5nOiAiYXV0byJ9KTsKKyAgbGV0IG1zZyA9ICJsb2Nh
bGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5nOiAnYXV0byciOworICBzaG91bGRCZSgzLCBh
dXRvLmZvcm1hdCgxMjMpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNCArIDEsIGF1dG8uZm9y
bWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEy
MzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhdXRvLmZvcm1hdCgxMjM0NTYp
Lmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNyArIDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxl
bmd0aCwgbXNnKTsKK30pOworbWdkMi5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICBsZXQg
YXV0byA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImF1dG8i
fSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ2F1
dG8nIjsKKyAgc2hvdWxkQmUoMywgYXV0by5mb3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgIC8v
IEluIHVzZUdyb3VwaW5nOiAiYXV0byIsIHNpbmNlIHRoZXNlIGxvY2FsZXMgaGFzCisgIC8vIG1p
bmltdW1Hcm91cGluZ0RpZ2l0c3siMiJ9LCBubyBncm91cGluZyBmb3IgNCBkaWdpdHMgYnV0IGhh
cyBncm91cGluZworICAvLyB3aGVuIG1vcmUgdGhhbiA0IGRpZ2l0cy4uCisgIHNob3VsZEJlKDQs
IGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSArIDEsIGF1dG8u
Zm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhdXRvLmZvcm1h
dCgxMjM0NTYpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNyArIDIsIGF1dG8uZm9ybWF0KDEy
MzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpp
bmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThhNWU1MzEwMjY0YmM1Li4zYzMwMWY1Nzhh
NWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1YTY1NWQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC5qcwpAQCAtNTMsOSArNTMsMTMgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1i
ZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICAgICAgICAgIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMywKICAgICAgICAgICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5k
ZWZpbmVkLAogICAgICAgICAgICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQs
Ci0gICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIHVzZUdyb3VwaW5n
OiAiYXV0byIsCiAgICAgICAgICAgICBub3RhdGlvbjogInN0YW5kYXJkIiwKLSAgICAgICAgICAg
IHNpZ25EaXNwbGF5OiAiYXV0byIKKyAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIsCisg
ICAgICAgICAgICByb3VuZGluZ01vZGU6ICJoYWxmRXhwYW5kIiwKKyAgICAgICAgICAgIHJvdW5k
aW5nSW5jcmVtZW50OiAxLAorICAgICAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogImF1dG8i
LAorICAgICAgICAgICAgcm91bmRpbmdQcmlvcml0eTogImF1dG8iLAogICAgICAgICB9OwogICAg
ICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTE4NCw5ICsxODgsOSBA
QCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJl
bmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGlt
dW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24g
dXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJG
b3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9j
YWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVt
YmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogdHJ1ZX0pLCBb
e2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdheXMifV0pLCB0cnVlKTsKIHNob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiBm
YWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6IGZhbHNlfV0pLCB0cnVlKTsKLXNo
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3Vw
aW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1
ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1
c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogIm1pbjIi
fV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHsg
Z2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9KSwgRXJyb3IpOwogCiAv
LyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCkBA
IC00MzUsNyArNDM5LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9y
bWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6Imxh
dG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZy
YWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0
cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgYHsibnVtYmVyaW5nU3lzdGVtIjoibGF0
biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOiJh
dXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNwbGF5IjoiYXV0byIsInJvdW5kaW5n
TW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3JlbWVudCI6MSwidHJhaWxpbmdaZXJvRGlz
cGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5IjoiYXV0byJ9YCk7CiB9CiAKIC8vIExlZ2Fj
eSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2ZkZTc4ZWFiMTI1MzI3
ZGQwZDMyOTZiZDI2ZWI3YWQxZGZlY2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpAQCAtMCwwICsxLDM2IEBACisvLyBD
b3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitpZiAoSW50bC5QbHVyYWxSdWxlcy5w
cm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAgICBjb25zdCBwbCA9IG5ldyBJbnRsLlBsdXJhbFJ1
bGVzKCJzbCIpOworICAgIHNob3VsZEJlKCJmZXciLCBwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSkp
OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442502</attachid>
            <date>2021-10-26 09:56:15 -0700</date>
            <delta_ts>2021-10-26 11:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026095614.patch</filename>
            <type>text/plain</type>
            <size>146705</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5jZTNkM2JhMmFiMDRmMTQ3
OTdmNWY5YjljZTZkZjk1ZGVhMjliNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpw
YXJ0VHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6SW50bE1hdGhlbWF0aWNhbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjplbnN1cmVOb25Eb3VibGUpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6OnRyeUdldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6Z2V0U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlF
eHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2NlMjkzNDIwNDI4
OTNmMmJkZi4uYWY5NDc3ZmFlNWE2YjY1YTQ1YmQ2YTU1MTRlODI1Mzk3NjdiMjQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCUUzMDcxNzhD
MjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2
NDQgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovOyB9OworCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuY3BwICovOyB9OwogCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUg
LyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwRThBNTYyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmgg
Ki87IH07CiAJCUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMEU4QTUxMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCAqLzsgfTsKQEAgLTE5MTYsNiArMTkxNyw3IEBACiAJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlB
MCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAv
KiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25z
dHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmggKi87IH07CisJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBC
MTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJG
OUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTExODM0LDYgKzExODM2LDgg
QEAKIAkJCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTlBRUMzMjU1OTQ1
N0YwMEI3ODQ4NSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM2NjQ0MUUyNTQ0MDlCMzAwMDE4NzZGIC8qIEludGxMaXN0Rm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRsTnVtYmVyRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1
cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhE
IC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEU4NzkwMjU0Qjk3
ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlF
MUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUwZTIzYTJmMzZjMTI1ZTk2N2YwZWZh
NWM0ZDliOThkYTg4Y2VjMTMuLmViMDk3YWQyZjJlMDY5MWQ0OWUzMTc2YmZmNzkzMTk1YjY2NGIw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzNiwxMSArODM2LDExIEBAIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKLXJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKK3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9ISURFX0RSQUZUX0FQSSdzIGVm
ZmVjdCBpbiB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKLXJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIEBuby11bmlmeSAvLyBDb25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3Qg
dG8gdGhpcyBmaWxlLgogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKaW5kZXggOWRjMGZlMmI2MDQ3ZmIyZTk4NTkwNWYyZGU2MzEzYzI3ZDJk
MDg4NC4uOTdiMjNlNWViZTUyOWJlNjQ5NzFhNzNjYzdlNWM2NTY4YmY0Yjg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xMzIsMTMgKzEzMiwy
MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB0aGlzVmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkpOwogICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAwOGE4NTM0NjFlNDhlMzZkMmZi
ZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRjMDg1NjdlODBiOWI3YzkxMWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91bmRpbmdNb2RlKSBcCisgICAg
bWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3Jv
KHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBtYWNybyhzZWdtZW50KSBcCisg
ICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2ICsyNTEsNyBAQAogICAgIG1h
Y3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIFwKICAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRl
eCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQwZGZmLi44ZjA5ODcxM2NiZjdj
NjZlYzFhMzI4ZDBkOTBmNzI3Y2ZlNWQ2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzUsOCArMzUsMjAgQEAKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisjaWZkZWYgVV9ISURFX0RSQUZU
X0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1i
ZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ1LDYg
KzU3LDIyIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdHRlciogZm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
IHVudW1mX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAo
Zm9ybWF0dGVyKQorICAgICAgICB1bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgor
CiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAg
c2l6ZV90IHNpemU7CkBAIC0yMTQsNiArMjQyLDU2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
CiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOwogfQogCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKKyAgICAgICAg
Y2FzZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAg
ICAgICAgcmV0dXJuICJpbmZpbml0eSJfczsKKyAgICAgICAgY2FzZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIi
X3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAidW5rbm93biJfczsKKyAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6CisgICAgICAg
IHJldHVybiAiZnJhY3Rpb24iX3M7CisgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJ
RUxEOgorICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5U
X1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAg
ICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVu
dE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJl
dHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOworICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFU
T1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CisgICAgY2FzZSBVTlVNX0NVUlJF
TkNZX0ZJRUxEOgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVU5VTV9Q
RVJDRU5UX0ZJRUxEOgorICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91
bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMK
KyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkg
PyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKKyAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoK
KyAgICAgICAgcmV0dXJuIHNpZ24gPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1Rf
RklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRpZgorICAgIC8vIFRoZXNl
IHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRo
ZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCisgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24n
dCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBh
biAidW5rbm93biIuCisgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6CisgICAgLy8gQW55IG5l
d2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0
IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuICJ1bmtub3duIl9zOworICAgIH0KKyAgICByZXR1cm4gInVua25vd24iX3M7Cit9CisK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewpAQCAtMzA5LDE0ICszODcsNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRp
b25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCisgICAgbV9yb3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwg
NTAwMCwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
c1tdID0geworICAgICAgICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwg
NTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudCA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1l
bnQgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChp
bnZhbGlkUm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1
LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1
MDAwIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3Jl
bWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVt
ZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwg
eyB7ICJhdXRvIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRl
Z2VyIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGlu
Z1plcm9EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJc
IiJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENv
bXBhY3REaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6
U2hvcnQgfSwgeyAibG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlz
cGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwor
ICAgIFVzZUdyb3VwaW5nIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVm
YXVsdFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5n
ID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3Jv
dXBpbmc6OkFsd2F5cywgVXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3Vw
aW5nOjpNaW4yIH0sIHsgImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJf
cywgVXNlR3JvdXBpbmc6OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0
cnVlLCBmYWxzZSwgXCJtaW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0
VXNlR3JvdXBpbmcpOworCisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3Bs
YXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIi
X3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdh
eXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVn
YXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwg
b3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2ln
bkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNpZ25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAi
bmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5
OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9
LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdh
eXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3Jv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91
bmRpbmdNb2RlOjpGbG9vciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01v
ZGU6OkV4cGFuZCB9LAorICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWls
IH0sCisgICAgICAgICAgICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
IH0sCisgICAgICAgICAgICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSwKKyAgICAgICAgICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVu
IH0KKyAgICAgICAgfSwgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJm
bG9vclwiLCBcImV4cGFuZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3Jc
IiwgXCJoYWxmRXhwYW5kXCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3Ry
aW5nKHJlc29sdmVkLmRhdGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRm
OCgpOwpAQCAtMzI5LDcgKzQ0Niw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1jZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpGbG9vcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1mbG9vciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhw
YW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5
IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0
NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWls
aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAg
Ly8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYg
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3
NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
Zmxvb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0zOTEsMjcgKzU0OSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9u
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgewor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsK
KyAgICAgICAgYXV0byBzdHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgMTA+PihtX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID49IHN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIjAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5n
LnNpemUoKSAtIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZv
cm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29u
ZmlndXJlIGFueXRoaW5nLgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4
LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2OSkgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
cHJlY2lzaW9uCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
ID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2ln
bmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBh
ZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNw
bGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0g
ICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJh
aWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2Cisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ2MiwyMCArNjY2LDU0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAg
ICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0
aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNj
OTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2
ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90
YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3Vz
ZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdy
b3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9u
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNv
bnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0dGVyID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4o
dW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVu
dW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0Vf
QVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19BUFBST1hJTUFURUxZLCBkYXRhTG9jYWxlV2l0
aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVO
VU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKQEAgLTUyOSwxMiArNzY3LDEzIEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2Vw
dFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxl
V2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Ns
b3NlPj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lv
bnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICByZXR1cm47CkBAIC01NTks
MTEgKzc5OCwyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJ
Q1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNp
bmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3Jv
dXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5
czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
R1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3Vz
ZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTU3
OCw3ICs4MzMsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbgogI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVy
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOwpAQCAtNTkzLDI5ICs4NDgsMjYgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24K
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwog
I2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCi1KU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFs
dWUpIGNvbnN0CitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LQotICAgIEFTU0VSVChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUkoKSk7Ci0g
ICAgYXV0byogcmF3U3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5n
LmNoYXJhY3RlcnM4KCkpOworICAgIHZhbHVlLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0
IGF1dG8mIHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gYnVmZmVyOwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQo
bV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRO
dW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVk
TnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKLSAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgp
LCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCBz
dHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQu
Il9zKTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKQEAgLTYyMywxMyAr
ODc1LDg5IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0gICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0
cik7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAjZW5kaWYKLSAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAg
ICBpZiAoc3RkOjppc25hbihzdGFydCkgfHwgc3RkOjppc25hbihlbmQpKQorICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgbnVtYmVycyBh
cmUgb3V0IG9mIHJhbmdlIl9zKTsKKworICAgIGlmIChlbmQgPCBzdGFydCkKKyAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2Vy
IHRoYW4gZW5kIl9zKTsKKworICAgIGlmIChzdGQ6OnNpZ25iaXQoZW5kKSAmJiBlbmQgPT0gMCAm
JiBzdGFydCA+PSAwKQorICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworCisgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0
cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4o
dW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdl
KG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUo
cmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0
IFVDaGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0
aCwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBy
YW5nZSJfcyk7CisKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0
aCkpOworfQorCitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHN0YXJ0LCBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUmJiBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGFydC5udW1i
ZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5k
Lm51bWJlclR5cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikK
KyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFz
c2VkIG51bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisKKyAgICBzdGFydC5lbnN1cmVOb25E
b3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygp
OworCisgICAgZW5kLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0cmlu
ZyA9IGVuZC5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJh
bmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1h
dHRlci5nZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5k
U3RyaW5nLmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisK
KyAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdl
dCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBh
IHJhbmdlIl9zKTsKKworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciog
c3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKK30K
KyNlbmRpZgorCiBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzI3LDExICsxMDU1LDgxIEBA
IEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlz
cGxheSBzaWduRGlzcGxheSkKICAgICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAgY2FzZSBT
aWduRGlzcGxheTo6RXhjZXB0WmVybzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOwor
ICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5lZ2F0aXZl
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3Vu
ZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBzd2l0Y2gg
KHJvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBy
ZXR1cm4gImNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBy
ZXR1cm4gImZsb29yIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAg
IHJldHVybiAiZXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAg
ICAgcmV0dXJuICJ0cnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWw6Cisg
ICAgICAgIHJldHVybiAiaGFsZkNlaWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZG
bG9vcjoKKyAgICAgICAgcmV0dXJuICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVuYyJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAiaGFsZkV2
ZW4iX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnRy
YWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9E
aXNwbGF5KQoreworICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2Ug
VHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAg
IGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAgIHJldHVy
biAic3RyaXBJZkludGVnZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3Vu
ZGluZ1R5cGUpCit7CisgICAgc3dpdGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
U2lnbmlmaWNhbnREaWdpdHM6CisgICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9yZVByZWNp
c2lvbiJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VH
cm91cGluZykKK3sKKyAgICBzd2l0Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
QWx3YXlzOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9z
KTsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0
aW9ucwogSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewpAQCAtNzY0LDE0ICsxMTYyLDIzIEBAIEpT
T2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGlt
dW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1v
cmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgor
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1G
cmFjdGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rp
b25EaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50
RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2Fu
dERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7Cisg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNl
R3JvdXBpbmciKSwgdXNlR3JvdXBpbmdWYWx1ZSh2bSwgbV91c2VHcm91cGluZykpOwogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9u
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsK
ICAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCiAgICAgICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3RE
aXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9j
b21wYWN0RGlzcGxheSkpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNp
Z25EaXNwbGF5U3RyaW5nKG1fc2lnbkRpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcm91bmRpbmdNb2RlU3RyaW5nKG1fcm91bmRpbmdNb2RlKSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIGpzTnVtYmVy
KG1fcm91bmRpbmdJbmNyZW1lbnQpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpKSk7CisgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJvdW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGlu
Z1R5cGUpKSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKQEAgLTc4MCw1MiArMTE4Nyw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVu
Y3Rpb24qIGZvcm1hdCkKICAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsK
IH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0Rmll
bGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQot
ewotICAgIHN3aXRjaCAoZmllbGQpIHsKLSAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuICJuYW4iX3M7
Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
ImluZmluaXR5Il9zOwotICAgICAgICByZXR1cm4gImludGVnZXIiX3M7Ci0gICAgY2FzZSBVTlVN
X0ZSQUNUSU9OX0ZJRUxEOgotICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwotICAgIGNhc2Ug
VU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9z
OwotICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgICAgIHJldHVybiAi
ZXhwb25lbnRTZXBhcmF0b3IiX3M7Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7Ci0gICAgY2FzZSBVTlVNX0VY
UE9ORU5UX0ZJRUxEOgotICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKLSAgICBj
YXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImdyb3Vw
Il9zOwotICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJjdXJy
ZW5jeSJfczsKLSAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgLy8gSWYgdGhl
IHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgotICAgICAgICAvLyBK
U1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCi0gICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51
bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7Ci0g
ICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFs
dWUpID8gIm1pbnVzU2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKLSNpZiBIQVZFKElDVV9VX05VTUJF
Ul9GT1JNQVRURVIpCi0gICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKLSAgICAgICAg
cmV0dXJuICJ1bml0Il9zOwotICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgotICAgICAgICBy
ZXR1cm4gImNvbXBhY3QiX3M7Ci0jZW5kaWYKLSAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cg
dXAgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1h
dCBvcHRpb25zLgotICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBh
bnkgb2Yga25vd24gcGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgotICAg
IGNhc2UgVU5VTV9QRVJNSUxMX0ZJRUxEOgotICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8g
dGhlIFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFu
ICJ1bmtub3duIiBwYXJ0LgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAidW5rbm93biJf
czsKLSAgICB9Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOwotfQotCi12b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50
bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWU6Ok51bWJlclR5cGUgbnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IEludGxGaWVsZEl0ZXJhdG9yJiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1
bml0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04NjgsNyArMTIzMCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1cnJlbnRJ
bmRleF0udHlwZTsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCAm
JiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKICAgICAgICAgICAgICsr
Y3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVy
YWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CisgICAgICAg
IGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxT
dHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhm
aWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOwogICAgICAgICBhdXRvIHBhcnRW
YWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRl
eCAtIHN0YXJ0SW5kZXgpOwogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOwpAQCAtODk0LDcgKzEyNTYsNyBAQCBKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZF
KElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsK
LSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7
CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51
bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2
YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKQEAgLTkxNSwxNiArMTI3Nyw2
MyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJh
dG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcoV1RGTW92ZShy
ZXN1bHQpKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRT
dHJpbmcsIGl0ZXJhdG9yLCBwYXJ0cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2Jh
bE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZh
bHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywgaXRlcmF0b3Is
IHBhcnRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0
dXJuIHBhcnRzOwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRv
JiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxk
UG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBv
c2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBv
cGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8
dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51
bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEoKSwg
c3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcs
IGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVzdWx0R2V0QWxs
RmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7
CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisg
ICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0lu
dGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUuc2lnbigpLCB2YWx1ZS5udW1iZXJU
eXBlKCksIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIHBhcnRzOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oCmluZGV4IDM4YTc3MGM1OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNh
ODU3ZGUuLjhlYmZiNGYxMzk2M2I2MGJmMDExZTk2ZWQ1ODIxOWQ1MjNkMDA3MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTM4
LDIwICszOCwxMDUgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCi0jaW5jbHVkZSA8dW5pY29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjaWYgIWRl
ZmluZWQoSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2lmIFVfSUNVX1ZFUlNJ
T05fTUFKT1JfTlVNID49IDY4CisjZGVmaW5lIEhBVkVfSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUiAxCisjZW5kaWYKICNlbmRpZgogCitzdHJ1Y3QgVU51bWJlckZvcm1hdHRlcjsKK3N0cnVj
dCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJbnRs
RmllbGRJdGVyYXRvcjsKIGNsYXNzIEpTQm91bmRGdW5jdGlvbjsKIGVudW0gY2xhc3MgUmVsZXZh
bnRFeHRlbnNpb25LZXkgOiB1aW50OF90OwogCi1lbnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUg
OiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNpZ25pZmljYW50RGlnaXRzLCBDb21wYWN0Um91
bmRpbmcgfTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFjdGlv
bkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIE1vcmVQcmVjaXNpb24sIExlc3NQcmVjaXNpb24g
fTsKK2VudW0gY2xhc3MgSW50bFJvdW5kaW5nUHJpb3JpdHkgOiB1aW50OF90IHsgQXV0bywgTW9y
ZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9OwogZW51bSBjbGFzcyBJbnRsTm90YXRpb24gOiB1
aW50OF90IHsgU3RhbmRhcmQsIFNjaWVudGlmaWMsIEVuZ2luZWVyaW5nLCBDb21wYWN0IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgSW50bE5vdGF0aW9uKTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
K3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqKTsKK307CisjZW5kaWYKKworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3Jt
YXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9OworI2VuZGlmCisKK2NsYXNzIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoSW50bE1hdGhlbWF0aWNhbFZh
bHVlKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE51bWJlclR5cGUgeyBJbnRlZ2VyLCBJbmZp
bml0eSwgTmFOLCB9OworICAgIHVzaW5nIFZhbHVlID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgQ1N0
cmluZz47CisKKyAgICBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBl
eHBsaWNpdCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUoZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1f
bnVtYmVyVHlwZShudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSkpCisgICAgICAgICwgbV9zaWdu
KHN0ZDo6c2lnbmJpdCh2YWx1ZSkpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7IH0K
KworICAgIGV4cGxpY2l0IEludGxNYXRoZW1hdGljYWxWYWx1ZShOdW1iZXJUeXBlIG51bWJlclR5
cGUsIGJvb2wgc2lnbiwgQ1N0cmluZyB2YWx1ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVt
YmVyVHlwZSkKKyAgICAgICAgLCBtX3NpZ24oc2lnbikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuc3VyZU5vbkRvdWJsZSgpCisgICAgeworICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fbnVtYmVyVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOdW1iZXJU
eXBlOjpJbnRlZ2VyOgorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBTdHJpbmc6Om51bWJlcihz
dGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKS5hc2NpaSgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92
YWx1ZSA9IENTdHJpbmcoIm5hbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBOdW1iZXJUeXBlOjpJbmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0g
Q1N0cmluZyhtX3NpZ24gPyAiLWluZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVy
VHlwZSBudW1iZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9v
bCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHRyeUdldERvdWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxkb3VibGU+KG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0
PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIGNvbnN0IENTdHJpbmcmIGdldFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6OmdldDxDU3RyaW5nPihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVt
YmVyVHlwZSBudW1iZXJUeXBlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6
TmFOOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIE51bWJlclR5cGU6OkluZmluaXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50
ZWdlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBO
dW1iZXJUeXBlOjpJbnRlZ2VyIH07CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZh
bHVlIG1fdmFsdWUgeyAwLjAgfTsKK307CisKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Tm9uRmluYWxPYmplY3Q7CkBAIC03NiwxNiArMTYxLDI0IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCop
IGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0
aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNvbnN0
OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsg
RGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lkIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNvbnN0
IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0cmlu
ZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1
ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9y
JiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKQEAgLTk0LDYgKzE4Nyw4IEBAIGNsYXNzIEludGxOdW1i
ZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBzdGF0aWMg
SW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nUHJpb3JpdHlTdHJp
bmcoSW50bFJvdW5kaW5nVHlwZSk7CisKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdChW
TSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNSw3
ICsyMDAsMTAgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFu
ZGFyZCwgQWNjb3VudGluZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90
IHsgU2hvcnQsIE5hcnJvdywgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkg
OiB1aW50OF90IHsgU2hvcnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDog
dWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNs
YXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFpl
cm8sIE5lZ2F0aXZlIH07CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1plcm9EaXNwbGF5IDogdWlu
dDhfdCB7IEF1dG8sIFN0cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBjbGFzcyBVc2VHcm91cGlu
ZyA6IHVpbnQ4X3QgeyBGYWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07CisgICAgZW51bSBjbGFz
cyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsgQ2VpbCwgRmxvb3IsIEV4cGFuZCwgVHJ1bmMsIEhh
bGZDZWlsLCBIYWxmRmxvb3IsIEhhbGZFeHBhbmQsIEhhbGZUcnVuYywgSGFsZkV2ZW4gfTsKIAog
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CkBAIC0x
MTMsMTQgKzIxMSwxNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJp
bmcoVW5pdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlT
dHJpbmcoQ29tcGFjdERpc3BsYXkpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3Bs
YXlTdHJpbmcoU2lnbkRpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdN
b2RlU3RyaW5nKFJvdW5kaW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGlu
Z1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VHcm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJp
ZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0
ZXI8dW51bWZfY2xvc2U+OwotICAgIHVzaW5nIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyID0gSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlckZvcm1hdHRlcjsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4gbV9u
dW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgogI2Vsc2UKLSAgICB1c2luZyBVTnVtYmVyRm9y
bWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+IG1fbnVtYmVyRm9ybWF0Owog
I2VuZGlmCiAKQEAgLTEzMyw2ICsyMzQsNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzIHsgMyB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRz
IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIHsgMCB9Owor
ICAgIHVuc2lnbmVkIG1fcm91bmRpbmdJbmNyZW1lbnQgeyAxIH07CiAgICAgU3R5bGUgbV9zdHls
ZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lEaXNw
bGF5OwogICAgIEN1cnJlbmN5U2lnbiBtX2N1cnJlbmN5U2lnbjsKQEAgLTE0MCw3ICsyNDIsOSBA
QCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIENvbXBhY3REaXNwbGF5IG1fY29tcGFjdERpc3BsYXk7CiAgICAgSW50bE5vdGF0aW9u
IG1fbm90YXRpb24geyBJbnRsTm90YXRpb246OlN0YW5kYXJkIH07CiAgICAgU2lnbkRpc3BsYXkg
bV9zaWduRGlzcGxheTsKLSAgICBib29sIG1fdXNlR3JvdXBpbmcgeyB0cnVlIH07CisgICAgVHJh
aWxpbmdaZXJvRGlzcGxheSBtX3RyYWlsaW5nWmVyb0Rpc3BsYXkgeyBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvIH07CisgICAgVXNlR3JvdXBpbmcgbV91c2VHcm91cGluZyB7IFVzZUdyb3VwaW5n
OjpBbHdheXMgfTsKKyAgICBSb3VuZGluZ01vZGUgbV9yb3VuZGluZ01vZGUgeyBSb3VuZGluZ01v
ZGU6OkhhbGZFeHBhbmQgfTsKICAgICBJbnRsUm91bmRpbmdUeXBlIG1fcm91bmRpbmdUeXBlIHsg
SW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmlu
ZGV4IDIzZDM4NjNkMTYwMDQzMWVmNzRkZjQwYzg3NDQ3MTc2NmQwNTE2OWEuLjVmZjQyY2RlYjQ0
ZGYxZDI0ZGYzZWJkZTJmZjYwZmMyNTAyOTNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtNjEsNDcg
KzYxLDY5IEBAIHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGxUeXBlKiBpbnRsSW5zCiAKICAgICBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKIAotICAgIGlmICgh
bWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM7
Ci0gICAgICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0
TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUs
IHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNp
Z25lZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIG1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cywg
MjEsIDIxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1T
aWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IG1heGltdW1TaWduaWZpY2FudERpZ2l0czsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBJbnRsUm91bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9w
dGlvbjxJbnRsUm91bmRpbmdQcmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1By
aW9yaXR5OjpBdXRvIH0sIHsgIm1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5
OjpNb3JlUHJlY2lzaW9uIH0sIHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9y
aXR5OjpMZXNzUHJlY2lzaW9uIH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIg
XCJhdXRvXCIsIFwibW9yZVByZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50
bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKLSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFj
dGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMs
IDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0
aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywg
MCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAh
PSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5p
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1
bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAg
ICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZp
bmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFj
dGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwg
MjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRz
KSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNv
bXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rp
b25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaGFzU2QgPSAhbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKSB8fCAhbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzVmFsdWUuaXNVbmRlZmluZWQoKTsKKyAgICBib29sIGhhc0ZkID0gIW1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBuZWVkU2QgPSBoYXNTZCB8fCByb3Vu
ZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworICAgIGJvb2wgbmVl
ZEZkID0gKCFoYXNTZCAmJiBub3RhdGlvbiAhPSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHx8IHJv
dW5kaW5nUHJpb3JpdHkgIT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG87CisKKyAgICBpZiAo
bmVlZFNkKSB7CisgICAgICAgIGlmIChoYXNTZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbWlu
aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWlu
aW11bVNpZ25pZmljYW50RGlnaXRzLCAxLCAyMSwgMSk7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBt
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNp
Z25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAg
aW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gMTsK
KyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAy
MTsKICAgICAgICAgfQotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGln
aXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkg
ewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlw
ZTo6Q29tcGFjdFJvdW5kaW5nOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRGZCkgewor
ICAgICAgICBpZiAoaGFzRmQpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRl
ZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7CisgICAgICAgICAgICB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmlt
dW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJhY3Rpb25E
aWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVt
RnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bUZyYWN0aW9uRGln
aXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgICAgICAgICAgaWYgKG1pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRz
ID09IHVuZGVmaW5lZFZhbHVlKQorICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0
cyA9IHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyk7CisgICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdp
dHM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rp
b25EaWdpdHNEZWZhdWx0OworICAgICAgICB9CiAgICAgfQogCi0gICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgIGlu
dGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0OwotICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBt
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0OworICAgIGlmIChuZWVkU2QgfHwgbmVlZEZkKSB7
CisgICAgICAgIGlmIChyb3VuZGluZ1ByaW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpN
b3JlUHJlY2lzaW9uKQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9
IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKHJvdW5k
aW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Okxlc3NQcmVjaXNpb24pCisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TGVzc1ByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAoaGFzU2QpCisgICAgICAgICAgICBpbnRs
SW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGlu
Z1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRp
Z2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMg
PSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0g
MTsKKyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IDI7
CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CkBAIC0xMjgsNCArMTUwLDQ5
IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JP
bGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHVud3JhcEZvckxlZ2FjeUlu
dGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Z2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25zdHJ1Y3RvcigpKTsKIH0KIAorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQv
ZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGljYWx2YWx1ZQoraW5saW5lIEludGxNYXRoZW1h
dGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAo
YXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAg
IHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBudW1iZXIudmFsdWUoKSB9OworCisgICAg
SlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJlcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUg
PSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSAtPiBJbnRs
TWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAg
ICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkg
fTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICAg
ICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gSW50
bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAgICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6
TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAgICAgIGJpZ0ludC0+c2lnbigpLAorICAgICAg
ICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmIChwcmlt
aXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJ
bnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSkpOworCisg
ICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBwcmltaXRpdmUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhwcmltaXRpdmUpLT52
YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxP
YmplY3QsIHN0cmluZyk7CisgICAgaWYgKCFiaWdJbnQpCisgICAgICAgIHJldHVybiBJbnRsTWF0
aGVtYXRpY2FsVmFsdWUgeyBQTmFOIH07CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJpZ0ludFRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgYmlnSW50KSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjli
MTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0NmJlNzI4Li5jYmVmNjA5MDk5NzJkNmFjMmI2ZThk
ZmVkOWNkMDQ0NDYwNmYyMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzks
MTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsK
IAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFu
Z2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQK
ICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFw
KSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNSBAQCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewogfQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigp
OworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJh
bmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1udW1iZXIt
Zm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYgKzk0LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8q
IG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBp
ZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewotICAgICAgICBkb3VibGUgdmFsdWUgPSBi
aWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAg
YXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2Jh
bE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3Qs
IHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRy
eUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgp
KSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFs
dWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQogCiBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEzNyw2ICsxMzIsMzggQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2Jh
bE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKIH0KIAor
I2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4K
KyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJG
b3JtYXQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFu
Z2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKworICAg
IEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1
ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisKKyAgICBpZiAoc3RhcnRWYWx1
ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMg
dW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2Jh
bE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJlciA9IHN0YXJ0LnRyeUdldERvdWJsZSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9IGVuZC50cnlHZXREb3VibGUoKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1h
dC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydE51bWJlci52YWx1ZSgpLCBlbmROdW1i
ZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgV1RG
TW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkpKTsKK30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE1MCwxMCArMTc3LDIwIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOwogCisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGlj
YWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2YWx1
ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgbnVt
YmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyNlbmRpZgog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKaW5kZXggNjE3NWY5ZGQwOTM3OTI5Zjhm
ZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMzN2Q2MGY2Njc4NDBiY2MwNGEzMjQ4M2JjZTBhNmE0
NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
CiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4
IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAxOTZlOGY0MTI0NjM2MWEuLjQxYzJiZmRmNmVlNTE1
YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTUxLDYgKzE1MSw0NSBAQCBSZXN1
bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxsYmFjazsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZh
bHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0
VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0VHlwZSBm
YWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJm
b3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2RpZmYuaHRtbCNzZWMtZ2V0c3RyaW5nb3Jib29sZWFu
b3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA+IDApOworCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrOworCisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCF2YWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSAmJiB2YWx1ZS5h
c0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlVmFsdWU7CisKKyAgICAgICAgYm9v
bCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlQm9v
bGVhbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzeVZhbHVlOworCisgICAgICAgIFN0cmluZyBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IHN0cmlu
Z1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5zZWNvbmQ7CisgICAgICAgIH0K
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5kTWVzc2FnZSkpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKworICAgIHJldHVybiBmYWxsYmFjazsKK30KIAogQUxXQVlTX0lOTElORSBib29s
IGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKFVDaGFyIGNoYXJhY3RlcikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4
IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYyYmZjM2QyOGEzNWU0ODkuLmU4MTQyNGJjOGEwNjk5
MmRkOGFkYzBmNjM1ZjBhOWM5Zjg1ZDVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMzIsOCArMzIsMjYgQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKIAorI2lm
ZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJCisjZW5kaWYKKyNp
bmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgor
I2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2Rl
L3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9EUkFGVF9B
UEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVy
YXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpCit7CisgICAgaWYgKHBsdXJhbFJ1bGVz
KQorICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Cit9CisKIGNvbnN0IENsYXNz
SW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9
OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47
CkBAIC0xMDcsOCArMTI1LDc4IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1
cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVt
YmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywg
SW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxlID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1
bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4o
VU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRy
LCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3Ry
aW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5p
Y29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1i
ZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIGludGVnZXItd2lkdGgvIiwgV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3ID8gJyon
IDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2Yg
Ki4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtSW50ZWdlckRpZ2l0czsg
KytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBzd2l0Y2gg
KG1fcm91bmRpbmdUeXBlKSB7CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRp
Z2l0czogeworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5t
ZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4i
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUZyYWN0aW9uRGln
aXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1f
bWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCcjJyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNl
L251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lv
bjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8v
IEJlZm9yZSBJbnRsLk51bWJlckZvcm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2Rl
LCB3aGVyZSB3ZSBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLgorICAgICAgICAvLyBTbywgaWYg
bGlua2VkIElDVSBpcyB+NjgsIHdlIGRvIG5vdGhpbmcuCisgICAgICAgIGlmIChXVEY6OklDVTo6
bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlm
ZDA0YTgzNjQKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9p
Y3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9u
cy5tZCNwcmVjaXNpb24KKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMgLSBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoJy8nKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmlt
dW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyAtIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdU
eXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJp
bmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1
cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAg
IG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVO
dW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBj
b252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0
YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJf
UkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1
cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExB
UFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51
bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UK
KyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9j
YWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUs
MTMgKzIxMywxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGlu
Z1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJl
Y2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxS
dWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUu
dXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JE
SU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVs
ZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1
cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5h
bCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJf
cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsyNDcsMTIgQEAgSlNPYmplY3QqIEludGxQ
bHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERp
Z2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVj
aXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlv
bkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdp
dHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0
cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0xODMsOCArMjc1LDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3Jp
ZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZv
cm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5
LDEyICsyOTIsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAg
IGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIs
IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUi
X3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFs
dWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVw
bHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2Vs
ZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVm
ZmVyKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8g
bGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2
YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCks
ICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0
YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5n
ZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3Rh
dHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2Yg
cGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJl
clJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFs
IHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1f
cGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLjliNzE4NGUw
YjRlNjEyMDZkMGIxYWNhMGZlY2ZjN2M2MmIxNDhkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMTYgQEAKIAog
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4K
LSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CisKIG5hbWVzcGFjZSBK
U0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOworfTsKKwogZW51bSBjbGFzcyBSZWxl
dmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTY0LDYgKzY5LDEwIEBAIGNsYXNzIElu
dGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU1Zh
bHVlIHNlbGVjdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAgICAgSlNP
YmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisjaWYgSEFW
RShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTVmFsdWUgc2VsZWN0UmFuZ2Uo
SlNHbG9iYWxPYmplY3QqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0OworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgSW50bFBsdXJhbFJ1bGVzKFZNJiwgU3RydWN0dXJlKik7CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtNzMsMTEgKzgyLDE2IEBAIGNsYXNzIEludGxQ
bHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIGVudW0g
Y2xhc3MgVHlwZSA6IGJvb2wgeyBDYXJkaW5hbCwgT3JkaW5hbCB9OwogCi0gICAgdXNpbmcgVVBs
dXJhbFJ1bGVzRGVsZXRlciA9IElDVURlbGV0ZXI8dXBscnVsZXNfY2xvc2U+OwotICAgIHVzaW5n
IFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFs
UnVsZXM7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJG
b3JtYXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRl
ckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5kaWYKKyNlbHNlCisgICAgdXNp
bmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1i
ZXJGb3JtYXQ7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX2xvY2FsZTsKICAgICB1bnNpZ25lZCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKaW5kZXggYzgw
YmZhMjIyM2ZkNTBlOGI5NzgxOGNlZDRiMDc1OGJiY2RlNmMyNy4uZWM2OWZlMjliYjIzOTgwYzY0
N2JhNGFmMDY0YjE4Njg3MTZhOWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICsz
Myw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCk7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
aW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlKTsKKyNlbmRpZgogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk7CiAKIH0KQEAgLTUwLDEwICs1MywxMCBAQCBjb25zdCBDbGFzc0luZm8g
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRsLlBsdXJhbFJ1bGVzIiwg
JkJhc2U6OgogQGVuZAogKi8KIAotSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBJbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCitJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU+
KHZtLmhlYXApKSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC02NywxMSArNzAs
MTUgQEAgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNlbGVjdFJhbmdlLCBpbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDYgKzk5LDI3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2Vs
ZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdChnbG9iYWxPYmplY3QsIHZhbHVlKSkp
OwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtbnVtYmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWludGwucGx1
cmFscnVsZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCisgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVy
YWxSdWxlcyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGx1cmFsUnVsZXMpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1
cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUGx1cmFsUnVsZXMiX3MpKTsKKworICAgIGRvdWJsZSBzdGFydCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGVuZCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSku
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1
cmFsUnVsZXMtPnNlbGVjdFJhbmdlKGdsb2JhbE9iamVjdCwgc3RhcnQsIGVuZCkpKTsKK30KKyNl
bmRpZgorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZS5oCmluZGV4IDZmYWEzYTRmNzhhZWE1OTg0MzJjYjEzMDM3ZjEwMzU5MzYyNTA4
NGIuLjYxZTA4YjJmNGQyY2FiMDYzYzc1YzY5NzZjMWIzNjBmYWZlNWZkMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogcHJpdmF0ZToKICAgICBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKaW5kZXggMGI1OTY2MTJm
ZjhjMzVmMWExZGUyNGRjZjBjNzZlZTNkYWI4NGI1NS4uYzI1Mzg1MDBmYjhlMzQxN2NiZjFjNjA4
YWVkNTIxYjc1NGJlOWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBK
U1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YgogICAgICAgICB9CiAKICAgICAgICAgSW50bEZpZWxkSXRl
cmF0b3IgZmllbGRJdGVyYXRvcigqaXRlcmF0b3IuZ2V0KCkpOwotICAgICAgICBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9y
bWF0OjpTdHlsZTo6RGVjaW1hbCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVy
YXRvciwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkp
OworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6RGVjaW1hbCwgc3RkOjpzaWduYml0KGFi
c1ZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZShhYnNW
YWx1ZSksIGZvcm1hdHRlZE51bWJlciwgZmllbGRJdGVyYXRvciwgcGFydHMsIGpzU3RyaW5nKHZt
LCBzaW5ndWxhclVuaXQodW5pdCkudG9TdHJpbmcoKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3
OC4uYjc2MzE2NzE0MTRjOTNjNWZkODQ0OTNjYzQ5YTNhMzc3NjI0ODE3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC00NjIsNiArNDYyLDggQEAgY2xhc3Mg
SlNCaWdJbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGhhc2hTbG93
KCk7CiAgICAgfQogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cnlFeHRyYWN0
RG91YmxlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIEpTQmlnSW50KFZNJiwgU3RydWN0dXJl
KiwgRGlnaXQqLCB1bnNpZ25lZCBsZW5ndGgpOwogCkBAIC02NzYsNCArNjc4LDQyIEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSB0cnlDb252ZXJ0VG9CaWdJbnQzMihKU0JpZ0ludCogYmlnSW50KQog
ICAgIHJldHVybiBiaWdJbnQ7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IEpTQmlnSW50Ojp0cnlFeHRyYWN0RG91YmxlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS5hc051bWJlcigpOworCisg
ICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiB2YWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKHZh
bHVlLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gdmFsdWUuYXNIZWFw
QmlnSW50KCk7CisgICAgaWYgKCFiaWdJbnQtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHVpbnQ2NF90IGludGVnZXIgPSAwOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERp
Z2l0KSA9PSA4KSB7CisgICAgICAgIGlmIChiaWdJbnQtPmxlbmd0aCgpICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdp
dCgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsK
KyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPiAyKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgaW50ZWdlciA9IGJpZ0ludC0+ZGlnaXQoMCk7CisgICAgICAg
IGlmIChiaWdJbnQtPmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICBpbnRlZ2VyIHw9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50LT5kaWdpdCgxKSkgPDwgMzIpOworICAgIH0KKworICAg
IGlmIChpbnRlZ2VyIDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhTYWZlSW50ZWdlcigpKSkK
KyAgICAgICAgcmV0dXJuIChiaWdJbnQtPnNpZ24oKSkgPyAtc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bnRlZ2VyKSA6IHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcik7CisKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNjODA0ZWViZmJiZmQyOWYzYzYz
Y2FjNDM2NmEwNjBmNmZjYjYyMS4uOTIwNzYzODVlODdhYWFlMzFkYzE3YjhhMjA2N2YxMGI2ZDUw
YmEwZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2Ut
djMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoc2hvdWxkTm90VGhyb3cpOgorICAgICAgICAobmYuZm9ybWF0UmFuZ2Uuc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuZm9yRWFjaCk6CisgICAgICAgIChuZi5mb3JtYXRSYW5nZVRvUGFy
dHMudmFsaWRSYW5nZXMuZm9yRWFjaCk6CisgICAgICAgIChuZjYuZm9ybWF0UmFuZ2Uuc2hvdWxk
VGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5n
LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzOgorICAgICAgICAqIHN0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodmFsaWRSb3VuZGluZ0luY3JlbWVu
dHMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5n
LWluY3JlbWVudC12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAg
ICh2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKToKKyAgICAgICAgKGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUt
dGFibGUtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoT2JqZWN0
LmtleXMuZXhwZWN0YXRpb25zLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC1yb3VuZGluZy1tb2RlLXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbGlkUm91bmRpbmdNb2RlLmZvckVh
Y2gpOgorICAgICAgICAoaW52YWxpZFJvdW5kaW5nTW9kZS5mb3JFYWNoKToKKyAgICAgICAgKGxl
dC5vcHRpb25zLmdldCBzaWduRGlzcGxheSk6CisgICAgICAgIChsZXQub3B0aW9ucy5nZXQgcm91
bmRpbmdNb2RlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNw
bGF5LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMt
djMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91
cGluZy12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgICh2YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoaW52
YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoYWxsLmZvckVhY2gpOgorICAgICAg
ICAobWdkMS5mb3JFYWNoKToKKyAgICAgICAgKG1nZDIuZm9yRWFjaCk6CisgICAgICAgICogc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzOgorICAgICAgICAodGVzdE51bWJlckZvcm1hdCk6Cisg
ICAgICAgIChzaG91bGRCZS50ZXN0TnVtYmVyRm9ybWF0LkludGwuTnVtYmVyRm9ybWF0KToKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisKIDIwMjEtMTAtMjMgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNA
aWdhbGlhLmNvbT4KIAogICAgICAgICB1cGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZWYwNzM5
MDYwNDczZjBiNWE1OWI3OWVhZDgwOWYxMzA5ZWZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2UuanMKQEAgLTAsMCArMSwx
MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQoImVuLVVTIik7Citjb25zdCBzdGFydCA9IDk4NzY1NDMyMTk4NzY1NDMyMW47Citj
b25zdCBlbmQgPSA5ODc2NTQzMjE5ODc2NTQzMjJuOworc2hvdWxkQmUobmYuZm9ybWF0KHN0YXJ0
KSwgYDk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIxYCk7CitpZiAobmYuZm9ybWF0UmFuZ2UpCisgICAg
c2hvdWxkQmUobmYuZm9ybWF0UmFuZ2Uoc3RhcnQsIGVuZCksIGA5ODcsNjU0LDMyMSw5ODcsNjU0
LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIyMzdj
MTcwZjE2Y2ExNmNiMjI4OTFlZWQ1YWE3NWU2MjM4MmM0MgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5qcwpAQCAtMCww
ICsxLDIyMyBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8g
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJy
b3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JU
eXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1l
fSBidXQgZ290ICR7U3RyaW5nKGVycm9yKX0hYCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZE5vdFRo
cm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2NvbnN0IHZhbGlkUmFuZ2VzID0gW1stMTIz
NDUsIC01Njc4XSwgWy0xMjM0NSwgNTY3ODldLCBbMTIzNDUsIDU2Nzg5XV07CisKK2NvbnN0IG5m
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtzaWduRGlzcGxheTogImV4Y2VwdFplcm8i
fSk7CitpZiAobmYuZm9ybWF0UmFuZ2UpIHsKKyAgICBbJ2Zvcm1hdFJhbmdlJ10uZm9yRWFjaChm
dW5jdGlvbihtZXRob2QpIHsKKyAgICAgICAgc2hvdWxkQmUoImZ1bmN0aW9uIiwgdHlwZW9mIG5m
W21ldGhvZF0pOworCisgICAgICAgIC8vIDIuIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90
KG5mLCBbW0luaXRpYWxpemVkTnVtYmVyRm9ybWF0XV0pLgorICAgICAgICAvLyBBc3NlcnQgaWYg
Y2FsbGVkIHdpdGhvdXQgbmYKKyAgICAgICAgbGV0IGYgPSBuZlttZXRob2RdOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7IGYoMSwgMjMpIH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8g
QXNzZXJ0IG5vcm1hbCBjYWxsIHN1Y2Nlc3MKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4g
bmZbbWV0aG9kXSgxLCAyMykpOworCisgICAgICAgIC8vIDMuIElmIHN0YXJ0IGlzIHVuZGVmaW5l
ZCAuLi4sIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkVGhyb3co
KCkgPT4geyBuZlttZXRob2RdKHVuZGVmaW5lZCwgMjMpIH0sIFR5cGVFcnJvcik7CisgICAgICAg
IC8vIDMuIElmIC4uLiBlbmQgaXMgdW5kZWZpbmVkLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRp
b24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxLCB1bmRlZmluZWQp
IH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gNC4gTGV0IHggYmUgPyBUb051bWVyaWMoc3Rh
cnQpLgorICAgICAgICAvLyBWZXJpZnkgaXQgd29uJ3QgdGhyb3cgZXJyb3IKKyAgICAgICAgc2hv
dWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXShudWxsLCAyMykpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKGZhbHNlLCAyMykpOworICAgICAgICBzaG91bGROb3RU
aHJvdygoKSA9PiBuZlttZXRob2RdKHRydWUsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93
KCgpID0+IG5mW21ldGhvZF0oIjEyIiwgMjMpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkg
PT4gbmZbbWV0aG9kXSgiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsIDIzKSk7Cisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXShTeW1ib2woMTIpLCAyMykgfSwg
VHlwZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwg
MjMpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMm4sIDIzKSk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSh7fSwgLTIzKSB9LCBSYW5n
ZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4geyBuZlttZXRob2RdKFtdLCAy
MykgfSk7CisKKyAgICAgICAgLy8gNS4gTGV0IHkgYmUgPyBUb051bWVyaWMoZW5kKS4KKyAgICAg
ICAgLy8gVmVyaWZ5IGl0IHdvbid0IHRocm93IGVycm9yCisgICAgICAgIHNob3VsZE5vdFRocm93
KCgpID0+IG5mW21ldGhvZF0oLTEyLCBudWxsKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgp
ID0+IG5mW21ldGhvZF0oLTEyLCBmYWxzZSkpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBuZlttZXRob2RdKC0xMiwgdHJ1ZSkpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBu
ZlttZXRob2RdKDEyLCAiMjMiKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21l
dGhvZF0oMTIsICIyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpKTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCBTeW1ib2woMjMpKSB9LCBUeXBlRXJyb3Ip
OworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAg
ICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyM24pKTsKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMiwge30pIH0sIFJhbmdlRXJyb3IpOwor
ICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oLTEyLCBbXSkgfSk7CisK
KyAgICAgICAgLy8gNi4gSWYgeCBpcyBOYU4gLi4uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0
aW9uLgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oTmFOLCAyMykgfSwg
UmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgiTmFO
IiwgMjMpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICAvLyA2LiBJZiAuLi4geSBpcyBOYU4sIHRo
cm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsg
bmZbbWV0aG9kXSgxMiwgTmFOKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3co
KCkgPT4geyBuZlttZXRob2RdKDEyLCAiTmFOIikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgInh5eiIpIH0sIFJhbmdlRXJyb3IpOwor
CisgICAgICAgIC8vIDcuIElmIHggaXMgYSBub24tZmluaXRlIE51bWJlciAuLi4sIHRocm93IGEg
UmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZb
bWV0aG9kXSgtMTIvMCwgMTIvMCkgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZb
bWV0aG9kXSgxMi8wLCAtMTIvMCkgfSwgUmFuZ2VFcnJvcik7CisKKyAgICAgICAgLy8gOC4gSWYg
eCBpcyBncmVhdGVyIHRoYW4geSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAg
ICAgLy8gbmVpdGhlciB4IG5vciB5IGFyZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsgbmZbbWV0aG9kXSgyMywgMTIpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAgICAvLyB4IGlzIG5vdCBi
aWdpbnQgYnV0IHkgaXMuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgy
MywgMTJuKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZb
bWV0aG9kXSgxMiwgMjNuKSk7CisgICAgICAgIC8vIHggaXMgYmlnaW50IGJ1dCB5IGlzIG5vdC4K
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDIzbiwgMTIpIH0sIFJhbmdl
RXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEybiwgMjMp
KTsKKyAgICAgICAgLy8gYm90aCB4IGFuZCB5IGFyZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IHsgbmZbbWV0aG9kXSgyM24sIDEybikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAg
IHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTJuLCAyM24pKTsKKworICAgICAgICB2
YWxpZFJhbmdlcy5mb3JFYWNoKAorICAgICAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAg
ICAgICAgICAgICAgY29uc3QgWCA9IEJpZ0ludCh4KTsKKyAgICAgICAgICAgICAgICBjb25zdCBZ
ID0gQmlnSW50KHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X3kgPSBuZltt
ZXRob2RdKHgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX3kgPSBuZltt
ZXRob2RdKFgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X1kgPSBuZltt
ZXRob2RdKHgsIFkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX1kgPSBuZltt
ZXRob2RdKFgsIFkpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZv
cm1hdHRlZF9YX3kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZv
cm1hdHRlZF94X1kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZv
cm1hdHRlZF9YX1kpOworCisgICAgICAgICAgICB9KTsKKyAgICB9KTsKK30KKworLy8gQ2hlY2sg
dGhlIG51bWJlciBvZiBwYXJ0IHdpdGggdHlwZTogInBsdXNTaWduIiBhbmQgIm1pbnVzU2lnbiIg
YXJlIGNvcnJlCitpZiAobmYuZm9ybWF0UmFuZ2VUb1BhcnRzKSB7CisgICAgdmFsaWRSYW5nZXMu
Zm9yRWFjaCgKKyAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAgICAgICAgICBjb25zdCBl
eHBlY3RlZFBsdXMgPSAoeCA+IDApID8gKCh5ID4gMCkgPyAyIDogMSkgOiAoKHkgPiAwKSA/IDEg
OiAwKTsKKyAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTWludXMgPSAoeCA8IDApID8gKCh5IDwg
MCkgPyAyIDogMSkgOiAoKHkgPCAwKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIGxldCBhY3R1YWxQ
bHVzID0gMDsKKyAgICAgICAgICAgIGxldCBhY3R1YWxNaW51cyA9IDA7CisgICAgICAgICAgICBj
b25zdCBwYXJ0cyA9IG5mLmZvcm1hdFJhbmdlVG9QYXJ0cyh4LCB5KTsKKyAgICAgICAgICAgIHBh
cnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCkgeworICAgICAgICAgICAgICAgIGlmIChwYXJ0LnR5
cGUgPT0gInBsdXNTaWduIikgYWN0dWFsUGx1cysrOworICAgICAgICAgICAgICAgIGlmIChwYXJ0
LnR5cGUgPT0gIm1pbnVzU2lnbiIpIGFjdHVhbE1pbnVzKys7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGNvbnN0IG1ldGhvZCA9ICJmb3JtYXRSYW5nZVRvUGFydHMoIiArIHggKyAiLCAi
ICsgeSArICIpOiAiOworICAgICAgICAgICAgc2hvdWxkQmUoZXhwZWN0ZWRQbHVzLCBhY3R1YWxQ
bHVzLAorICAgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2YgdHlwZTogJ3BsdXNTaWdu
JyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKGV4cGVjdGVk
TWludXMsIGFjdHVhbE1pbnVzLAorICAgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2Yg
dHlwZTogJ21pbnVzU2lnbicgaW4gcGFydHMgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgIH0pOwor
fQorCisvLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVy
Zm9ybWF0LXYzI2Zvcm1hdHJhbmdlLWVjbWEtNDAyLTM5MworY29uc3QgbmYyID0gbmV3IEludGwu
TnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJy
ZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CisKKy8vIFJF
QURNRS5tZCBzYWlkIGl0IGV4cGVjdCAi4oKsM+KAkzUiCitpZiAobmYyLmZvcm1hdFJhbmdlKQor
ICAgIHNob3VsZEJlKCLigqwzIOKAkyDigqw1IiwgbmYyLmZvcm1hdFJhbmdlKDMsIDUpKTsKKwor
Y29uc3QgbmYzID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTog
ImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGln
aXRzOiAwLAorfSk7CitpZiAobmYzLmZvcm1hdFJhbmdlVG9QYXJ0cykgeworICAgIGNvbnN0IGFj
dHVhbDMgPSBuZjMuZm9ybWF0UmFuZ2VUb1BhcnRzKDMsIDUpOworICAgIC8qCisgICAgWworICAg
ICAge3R5cGU6ICJjdXJyZW5jeSIsIHZhbHVlOiAi4oKsIiwgc291cmNlOiAic3RhcnRSYW5nZSJ9
CisgICAgICB7dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjMiLCBzb3VyY2U6ICJzdGFydFJhbmdl
In0KKyAgICAgIHt0eXBlOiAibGl0ZXJhbCIsIHZhbHVlOiAi4oCTIiwgc291cmNlOiAic2hhcmVk
In0KKyAgICAgIHt0eXBlOiAiaW50ZWdlciIsIHZhbHVlOiAiNSIsIHNvdXJjZTogImVuZFJhbmdl
In0KKyAgICBdCisgICAgKi8KKyAgICBzaG91bGRCZSg1LCBhY3R1YWwzLmxlbmd0aCk7CisgICAg
c2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1swXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKs
IiwgYWN0dWFsM1swXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwz
WzBdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImludGVnZXIiLCBhY3R1YWwzWzFdLnR5cGUpOwor
ICAgIHNob3VsZEJlKCIzIiwgYWN0dWFsM1sxXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0
UmFuZ2UiLCBhY3R1YWwzWzFdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImxpdGVyYWwiLCBhY3R1
YWwzWzJdLnR5cGUpOworICAgIHNob3VsZEJlKCIg4oCTICIsIGFjdHVhbDNbMl0udmFsdWUpOwor
ICAgIHNob3VsZEJlKCJzaGFyZWQiLCBhY3R1YWwzWzJdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUo
ImN1cnJlbmN5IiwgYWN0dWFsM1szXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFs
M1szXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoImVuZFJhbmdlIiwgYWN0dWFsM1szXS5zb3VyY2Up
OworICAgIHNob3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1s0XS50eXBlKTsKKyAgICBzaG91bGRC
ZSgiNSIsIGFjdHVhbDNbNF0udmFsdWUpOworICAgIHNob3VsZEJlKCJlbmRSYW5nZSIsIGFjdHVh
bDNbNF0uc291cmNlKTsKK30KKworY29uc3QgbmY0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJl
bi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisg
ICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmY0LmZvcm1hdFJhbmdlKQor
ICAgIHNob3VsZEJlKCJ+4oKsMyIsIG5mNC5mb3JtYXRSYW5nZSgyLjksIDMuMSkpOworCitjb25z
dCBuZjUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIiwgeworICAgIHN0eWxlOiAiY3Vy
cmVuY3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBzaWduRGlzcGxheTogImFsd2F5cyIs
Cit9KTsKK2lmIChuZjUuZm9ybWF0UmFuZ2UpCisgICAgc2hvdWxkQmUoIn4r4oKsMy4wMCIsIG5m
NS5mb3JtYXRSYW5nZSgyLjk5OSwgMy4wMDEpKTsKKworY29uc3QgbmY2ID0gbmV3IEludGwuTnVt
YmVyRm9ybWF0KCJlbiIpOworaWYgKG5mNi5mb3JtYXRSYW5nZSkgeworICAgIHNob3VsZEJlKCIz
4oCT4oieIiwgbmY2LmZvcm1hdFJhbmdlKDMsIDEvMCkpOworICAgIHNob3VsZFRocm93KCgpID0+
IHsgbmY2LmZvcm1hdFJhbmdlKDMsIDAvMCk7IH0sIFJhbmdlRXJyb3IpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy12My5qcyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2RhZDkyZGMzMTAwNmUzMWQyOTlhZTg0OTAyODMyZWFhMGM3MzU0NwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJp
bmctdjMuanMKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAi
ICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4t
VVMiKTsKK2NvbnN0IHN0cmluZyA9ICI5ODc2NTQzMjE5ODc2NTQzMjEiOworY29uc3Qgc3RyaW5n
MiA9ICI5ODc2NTQzMjE5ODc2NTQzMjIiOworc2hvdWxkQmUobmYuZm9ybWF0KHN0cmluZyksIGA5
ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5mLmZvcm1hdFJhbmdlKQorICAgIHNob3Vs
ZEJlKG5mLmZvcm1hdFJhbmdlKHN0cmluZywgc3RyaW5nMiksIGA5ODcsNjU0LDMyMSw5ODcsNjU0
LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMKaW5kZXggZWY3MWYwZjFjNmM1
NDFkZmE5YmMzNDQxYWExYjNmNDA3Y2Q1ZTgwMy4uY2NmOTdlYzI0MTU2ZGQyZDRkMmM5YTA1ZjI0
NGJjNWJkODYzNjQ1MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtZm9ybWF0LXRvLXBhcnRzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LWZvcm1hdC10by1wYXJ0cy5qcwpAQCAtNTcsMyArNTcsMzUgQEAgZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgewogc2hvdWxkQmUoSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVT
JywgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9ybWF0VG9QYXJ0cyhOdW1iZXIuTUFYX1ZBTFVF
KS5sZW5ndGgsIDEpOwogc2hvdWxkQmUoSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywgeyB1c2VH
cm91cGluZzogZmFsc2UgfSkuZm9ybWF0VG9QYXJ0cyhOdW1iZXIuTUFYX1ZBTFVFKVswXS52YWx1
ZS5sZW5ndGgsIDMwOSk7CiBzaG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3Jt
YXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpLmxlbmd0aCwgMjA1KTsKKworc2hvdWxkQmUoCisg
ICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZv
cm1hdFRvUGFydHMoNDAwMG4pCisgICAgKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAg
IHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAi
LCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0K
KyAgICBdKSk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KAorICAgICAgICBJbnRs
Lk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKC00MDAwbikKKyAgICApLAorICAg
IEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoibWludXNTaWduIiwidmFsdWUiOiIt
In0sCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0
eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZh
bHVlIjoiMDAwIn0KKyAgICBdKSk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KAor
ICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnKS5mb3JtYXRUb1BhcnRzKCItNDAwMCIp
CisgICAgKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsidHlwZSI6Im1pbnVzU2ln
biIsInZhbHVlIjoiLSJ9LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiI0In0s
CisgICAgICAgIHsidHlwZSI6Imdyb3VwIiwidmFsdWUiOiIsIn0sCisgICAgICAgIHsidHlwZSI6
ImludGVnZXIiLCJ2YWx1ZSI6IjAwMCJ9CisgICAgXSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXJlc29sdmVkLW1hdGNo
LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVt
ZW50LXJlc29sdmVkLW1hdGNoLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NjE4Y2U5YjBlZmEzMjVmMjYw
NWY3NmVlNTZjZDQxMjc2OGQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMK
QEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0
ZWQpOworfQorCitsZXQgdmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBbCisgIDEsIDUsIDEwLCAy
MCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAKK107
CisKK3ZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNy
ZW1lbnQpIHsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3Jv
dW5kaW5nSW5jcmVtZW50fSk7CisgIHNob3VsZEJlKHJvdW5kaW5nSW5jcmVtZW50LCBuZi5yZXNv
bHZlZE9wdGlvbnMoKS5yb3VuZGluZ0luY3JlbWVudCk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qcyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWJjMmE1ZTNmZmU0ODlmZmZmMjBlNTAyNWU0ZWY0ZTZmM2Q1NmVlCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmct
aW5jcmVtZW50LXYzLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7
Cit9CisKKworbGV0IHZhbGlkUm91bmRpbmdJbmNyZW1lbnRzID0gWworICAxLCAyLCA1LCAxMCwg
MjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMAorXTsKKworbGV0IGludmFsaWRSb3VuZGluZ0lu
Y3JlbWVudHMgPSBbCisgIC0xLCAtNSwgMCwgMTAwMSwgMTEwMCwgNTUwMCwgMjAwMDAwLCA1MDAw
MDUsIDEwMDAwMDAwLCAxMDAwMCwgNTAwMDAsIDEwMDAwMCwgNTAwMDAwLCAxMDAwMDAwLAorICA1
MDAwMDAwCitdOworCit2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJv
dW5kaW5nSW5jcmVtZW50KSB7CisgICAgbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
e3JvdW5kaW5nSW5jcmVtZW50fSk7Cit9KTsKKworaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5m
b3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5jcmVtZW50KSB7CisgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1l
bnR9KQorICB9LCBSYW5nZUVycm9yKTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUwZjI2OGQ5ODZjMTZlM2Y0OTdhZjM4NDU4ZmVlZDg5MDlkMjY0MzYKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGlu
Zy1pbmNyZW1lbnQtdmFsdWUtdjMuanMKQEAgLTAsMCArMSw0OSBAQAorLy8gQ29weXJpZ2h0IDIw
MjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgcGVubnkgPSBuZXcg
SW50bC5OdW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEgfSk7CitsZXQg
bmlja2VsID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJlbiIsIHsgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50
OiA1IH0pOworbGV0IGRpbWUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRp
bmdJbmNyZW1lbnQ6IDEwIH0pOworCisvLyBodHRwczovL25lY3MuY29tL2tub3dsZWRnZWJhc2Uv
c3lzcHJlZnNfcHJjX21vZF9yb3VuZG1ldGguaHRtCitzaG91bGRCZSgiMTAuMTUiLCBwZW5ueS5m
b3JtYXQoMTAuMTU0KSk7CitzaG91bGRCZSgiMTAuMTYiLCBwZW5ueS5mb3JtYXQoMTAuMTU1KSk7
CitzaG91bGRCZSgiMTAuMTAiLCBuaWNrZWwuZm9ybWF0KDEwLjEyNCkpOworc2hvdWxkQmUoIjEw
LjE1Iiwgbmlja2VsLmZvcm1hdCgxMC4xMjUpKTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9y
bWF0KDEwLjQ0NCkpOworLy8gbWlzdGFrZSBpbiB0aGUgYWJvdmUgcGFnZSwgdGhlIHJlc3VsdCBz
aG91bGQgYmUgMTAuNDAgbm90IDEwLjUwCitzaG91bGRCZSgiMTAuNDAiLCBkaW1lLmZvcm1hdCgx
MC40NDUpKTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NSkpOworc2hvdWxk
QmUoIjEwLjUwIiwgZGltZS5mb3JtYXQoMTAuNDUpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXRhYmxlLXYzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRjYjczNDNlYWQxZjM5NTcyODgwYThiMGU0MzY5Y2Y5N2ZhZjc0MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2Rl
LXRhYmxlLXYzLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkICsgIiAiICsgbWVzc2FnZSk7Cit9CisKKy8v
IENoZWNrIHRoZSByb3VuZGluZyBiZWhhdmlvci4KKy8vIEJhc2VkIG9uIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbnVtYmVyZm9ybWF0L2RpZmYuaHRt
bCN0YWJsZS1pbnRsLXJvdW5kaW5nLW1vZGVzCitsZXQgaW5wdXRzID0gWy0xLjUsIDAuNCwgMC41
LCAwLjYsIDEuNV07CitsZXQgZXhwZWN0YXRpb25zID0geworICAiY2VpbCI6ICAgICAgIFsiLTEi
LCAiMSIsICIxIiwgIjEiLCAiMiJdLAorICAiZmxvb3IiOiAgICAgIFsiLTIiLCAiMCIsICIwIiwg
IjAiLCAiMSJdLAorICAiZXhwYW5kIjogICAgIFsiLTIiLCAiMSIsICIxIiwgIjEiLCAiMiJdLAor
ICAidHJ1bmMiOiAgICAgIFsiLTEiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAiaGFsZkNlaWwi
OiAgIFsiLTEiLCAiMCIsICIxIiwgIjEiLCAiMiJdLAorICAiaGFsZkZsb29yIjogIFsiLTIiLCAi
MCIsICIwIiwgIjEiLCAiMSJdLAorICAiaGFsZkV4cGFuZCI6IFsiLTIiLCAiMCIsICIxIiwgIjEi
LCAiMiJdLAorICAiaGFsZlRydW5jIjogIFsiLTEiLCAiMCIsICIwIiwgIjEiLCAiMSJdLAorICAi
aGFsZkV2ZW4iOiAgIFsiLTIiLCAiMCIsICIwIiwgIjEiLCAiMiJdLAorfTsKK09iamVjdC5rZXlz
KGV4cGVjdGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbihyb3VuZGluZ01vZGUpIHsKKyAgbGV0IGV4
cCA9IGV4cGVjdGF0aW9uc1tyb3VuZGluZ01vZGVdOworICBsZXQgaWR4ID0gMDsKKyAgbGV0IG5m
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtyb3VuZGluZ01vZGUsIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMH0pOworICBzaG91bGRCZShyb3VuZGluZ01vZGUsIG5mLnJlc29sdmVkT3B0
aW9ucygpLnJvdW5kaW5nTW9kZSk7CisgIGlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGlucHV0KSB7
CisgICAgbGV0IG1zZyA9ICJpbnB1dDogIiArIGlucHV0ICsgIiB3aXRoIHJvdW5kaW5nTW9kZTog
IiArIHJvdW5kaW5nTW9kZTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICAg
ICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0KSwgbXNnKTsKKyAgICBlbHNl
IGlmIChyb3VuZGluZ01vZGUgIT09ICJoYWxmQ2VpbCIgJiYgcm91bmRpbmdNb2RlICE9PSAiaGFs
ZkZsb29yIikKKyAgICAgICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0KSwg
bXNnKTsKKyAgICBlbHNlCisgICAgICAgIG5mLmZvcm1hdChpbnB1dCkgLy8gc2hvdWxkIG5vdCB0
aHJvdy4KKyAgfSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtcm91bmRpbmctbW9kZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2ODU2ODM4ZjUzOTQ1MzE1ZGMz
NmU0YzU0ODFhMmRhMmNjMjdiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKQEAgLTAsMCArMSwxMDEgQEAKKy8v
IENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhy
b3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBm
dW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7Cisg
ICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3Ry
aW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkUm91bmRpbmdNb2RlID0gWworICAgICJjZWls
IiwKKyAgICAiZmxvb3IiLAorICAgICJleHBhbmQiLAorICAgICJoYWxmQ2VpbCIsCisgICAgImhh
bGZFeHBhbmQiLAorICAgICJoYWxmRmxvb3IiLAorICAgICJoYWxmVHJ1bmMiLAorICAgICJoYWxm
RXZlbiIsCisgICAgInRydW5jIiwKK107CisKK2xldCBpbnZhbGlkUm91bmRpbmdNb2RlID0gWwor
ICAgICJjZWlsaW5nIiwKKyAgICAiZG93biIsCisgICAgIkRvd24iLAorICAgICJmbG9vcmluZyIs
CisgICAgImhhbGZEb3duIiwKKyAgICAiaGFsZlVwIiwKKyAgICAiaGFsZnVwIiwKKyAgICAiaGFs
ZmV2ZW4iLAorICAgICJoYWxmZG93biIsCisgICAgImhhbGYtdXAiLAorICAgICJoYWxmLWV2ZW4i
LAorICAgICJoYWxmLWRvd24iLAorICAgICJ1cCIsCisgICAgIlVwIiwKK107CisKK3ZhbGlkUm91
bmRpbmdNb2RlLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdNb2RlKSB7CisgIGxldCBuZiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3VuZGluZ01vZGV9KTsKKyAgc2hvdWxk
QmUocm91bmRpbmdNb2RlLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpOworfSk7
CisKK2ludmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaChmdW5jdGlvbihyb3VuZGluZ01vZGUpIHsK
KyAgc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1h
dCh1bmRlZmluZWQsIHtyb3VuZGluZ01vZGV9KTsgfSwgYFJhbmdlRXJyb3I6IHJvdW5kaW5nTW9k
ZSBtdXN0IGJlIGVpdGhlciAiY2VpbCIsICJmbG9vciIsICJleHBhbmQiLCAidHJ1bmMiLCAiaGFs
ZkNlaWwiLCAiaGFsZkZsb29yIiwgImhhbGZFeHBhbmQiLCAiaGFsZlRydW5jIiwgb3IgImhhbGZF
dmVuImApOworfSk7CisKKy8vIENoZWNrIGRlZmF1bHQgaXMgImhhbGZFeHBhbmQiCitzaG91bGRC
ZSgiaGFsZkV4cGFuZCIsIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMo
KS5yb3VuZGluZ01vZGUpKTsKK3Nob3VsZEJlKCJoYWxmRXhwYW5kIiwgKG5ldyBJbnRsLk51bWJl
ckZvcm1hdCgKKyAgICB1bmRlZmluZWQsIHtyb3VuZGluZ01vZGU6IHVuZGVmaW5lZH0pLnJlc29s
dmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSkpOworCisvLyBDaGVjayByb3VuZGluZ01vZGUgaXMg
cmVhZCBvbmNlIGFmdGVyIHJlYWRpbmcgc2lnbkRpc3BsYXkKKworbGV0IHJlYWQgPSBbXTsKK2xl
dCBvcHRpb25zID0geworICBnZXQgc2lnbkRpc3BsYXkoKSB7IHJlYWQucHVzaCgnc2lnbkRpc3Bs
YXknKTsgcmV0dXJuIHVuZGVmaW5lZDsgfSwKKyAgZ2V0IHJvdW5kaW5nTW9kZSgpIHsgcmVhZC5w
dXNoKCdyb3VuZGluZ01vZGUnKTsgcmV0dXJuIHVuZGVmaW5lZDsgfSwKK307CisKK25ldyBJbnRs
Lk51bWJlckZvcm1hdCh1bmRlZmluZWQsIG9wdGlvbnMpOworc2hvdWxkQmUoInNpZ25EaXNwbGF5
LHJvdW5kaW5nTW9kZSIsIHJlYWQuam9pbigiLCIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXNpZ24tZGlzcGxheS12My5qcyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LXNpZ24tZGlzcGxheS12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWNiNGM1
MTRiYzNiMTE1NDM5ZGFlZDExN2JmNDBlMmE3NjQzODgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzCkBAIC0wLDAg
KzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
Ky8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVk
KTsKK30KKworLy8gVGVzdCBkZWZhdWx0LgorbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0
KCk7CitzaG91bGRCZSgiYXV0byIsIG5mLnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsK
KworbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIik7CitzaG91bGRCZSgiYXV0byIsIG5m
LnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKworY29uc3QgdGVzdERhdGEgPSBbCisg
ICAgWyJhdXRvIiwgICAgICAgICItMTIzIiwgICItMCIsICAiMCIsICAiMTIzIl0sCisgICAgWyJh
bHdheXMiLCAgICAgICItMTIzIiwgICItMCIsICIrMCIsICIrMTIzIl0sCisgICAgWyJuZXZlciIs
ICAgICAgICIxMjMiLCAgICIwIiwgICIwIiwgICIxMjMiXSwKKyAgICBbImV4Y2VwdFplcm8iLCAg
Ii0xMjMiLCAgIjAiLCAgIjAiLCAgIisxMjMiXSwKKyAgICBbIm5lZ2F0aXZlIiwgICAgIi0xMjMi
LCAgIjAiLCAgIjAiLCAgIjEyMyJdLAorXTsKKworZm9yIChjb25zdCBbc2lnbkRpc3BsYXksIG5l
ZywgbmVnWmVybywgemVybywgcG9zXSBvZiB0ZXN0RGF0YSkgeworICBuZiA9IG5ldyBJbnRsLk51
bWJlckZvcm1hdCgiZW4iLCB7c2lnbkRpc3BsYXl9KTsKKyAgc2hvdWxkQmUoc2lnbkRpc3BsYXks
IG5mLnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKyAgc2hvdWxkQmUobmVnLCBuZi5m
b3JtYXQoLTEyMykpOworICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICAgIHNob3Vs
ZEJlKG5lZ1plcm8sIG5mLmZvcm1hdCgtMCkpOworICBzaG91bGRCZSh6ZXJvLCBuZi5mb3JtYXQo
MCkpOworICBzaG91bGRCZShwb3MsIG5mLmZvcm1hdCgxMjMpKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNv
bHZlZC1vcHRpb25zLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJh
aWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMtdjMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlh
ZTNmYjBkZjllMzZiZjU5MDRhMmQ3MzkzMTM5YzYzNTU0ZjJmNAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1y
ZXNvbHZlZC1vcHRpb25zLXYzLmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAyMDIx
IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworbGV0IGRlZmF1bHRGbXQgPSBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czog
MiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pOworbGV0IGF1dG9GbXQgPSBuZXcgSW50bC5O
dW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11
bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ2F1dG8nfSk7
CitsZXQgc3RyaXBJZkludGVnZXJGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAg
ICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAor
ICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ3N0cmlwSWZJbnRlZ2VyJ30pOworCitzaG91bGRC
ZSgiYXV0byIsIGRlZmF1bHRGbXQucmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxh
eSk7CitzaG91bGRCZSgiYXV0byIsIGF1dG9GbXQucmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmda
ZXJvRGlzcGxheSk7CitzaG91bGRCZSgic3RyaXBJZkludGVnZXIiLAorICAgIHN0cmlwSWZJbnRl
Z2VyRm10LnJlc29sdmVkT3B0aW9ucygpLnRyYWlsaW5nWmVyb0Rpc3BsYXkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5
LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1k
aXNwbGF5LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ODU1YWIwN2U3Yzg1Nzc3M2Q5NTBhOGQyOWYwOTNk
NWRmMDRhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanMKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29w
eXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
CisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
Ky8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgZGVm
YXVsdEZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSk7CitsZXQgYXV0b0ZtdCA9
IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5
OiAnYXV0byd9KTsKK2xldCBzdHJpcElmSW50ZWdlckZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1h
dCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25E
aWdpdHM6IDIsCisgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnc3RyaXBJZkludGVnZXInfSk7
CisKK3Nob3VsZEJlKCIzLjE0IiwgZGVmYXVsdEZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRC
ZSgiMy4xNCIsIGF1dG9GbXQuZm9ybWF0KDMuMTQxMSkpOworc2hvdWxkQmUoIjMuMTQiLCBzdHJp
cElmSW50ZWdlckZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRG
bXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDMu
MDAxNDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIs
IHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgzLjAwMTQxMSkpOworZWxzZQorICAgIHNob3VsZEJl
KCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgi
My4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDIuOTk5NDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1
dG9GbXQuZm9ybWF0KDIuOTk5NDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAg
ICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgyLjk5OTQxMSkpOworZWxz
ZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDIuOTk5NDEx
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91
cGluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5n
LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFjZGU2NDdhODg5OWI2YjUxNjhiZmI1ZGVmZTM1OTZiZTEzZjZj
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11
c2Vncm91cGluZy12My5qcwpAQCAtMCwwICsxLDE1NSBAQAorLy8gQ29weXJpZ2h0IDIwMjAgdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkVXNlR3Jv
dXBpbmcgPSBbCisgICAgIm1pbjIiLAorICAgICJhdXRvIiwKKyAgICAiYWx3YXlzIiwKKyAgICBm
YWxzZSwKK107CisKK2xldCBpbnZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1pbi0yIiwKKyAg
ICAidHJ1ZSIsCitdOworCit2YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rpb24odXNlR3Jv
dXBpbmcpIHsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3Vz
ZUdyb3VwaW5nfSk7CisgIHNob3VsZEJlKHVzZUdyb3VwaW5nLCBuZi5yZXNvbHZlZE9wdGlvbnMo
KS51c2VHcm91cGluZyk7Cit9KTsKKworaW52YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rp
b24odXNlR3JvdXBpbmcpIHsKKyAgc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBuZiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZ30pOyB9LCBgUmFuZ2VF
cnJvcjogdXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsICJtaW4yIiwgImF1
dG8iLCBvciAiYWx3YXlzImApOworfSk7CisKKy8vIHVzZUdyb3VwaW5nOiB1bmRlZmluZWQgZ2V0
ICJhdXRvIgorc2hvdWxkQmUoImF1dG8iLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSku
cmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworc2hvdWxkQmUoImF1dG8iLAorICAgIChu
ZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHVuZGVmaW5lZH0p
KQorICAgICAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworCisvLyB1c2VHcm91
cGluZzogdHJ1ZSBnZXQgImFsd2F5cyIKK3Nob3VsZEJlKCJhbHdheXMiLAorICAgIChuZXcgSW50
bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHRydWV9KSkKKyAgICAgICAg
LnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKKworLy8gdXNlR3JvdXBpbmc6IGZhbHNl
IGdldCBmYWxzZQorLy8gdXNlR3JvdXBpbmc6ICIiIGdldCBmYWxzZQorc2hvdWxkQmUoZmFsc2Us
CisgICAgKG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZzogZmFs
c2V9KSkKKyAgICAgICAgLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKK3Nob3VsZEJl
KGZhbHNlLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBp
bmc6ICIifSkpCisgICAgICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CisKKy8v
IFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzCitsZXQgbWdk
MSA9IFsiZW4iXTsKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5n
RGlnaXRzeyIyIn0KK2xldCBtZ2QyID0gWyJlcyIsICJwbCIsICJsdiIsICJldCIsICJiZyJdOwor
bGV0IGFsbCA9IG1nZDEuY29uY2F0KG1nZDIpOworCisvLyBDaGVjayAiYWx3YXlzIgorYWxsLmZv
ckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBvZmYgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6IGZhbHNlfSk7CisgIGxldCBtc2cgPSAibG9jYWxlOiAi
ICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogZmFsc2UiOworICAvLyBJbiB1c2VHcm91cGluZzog
ZmFsc2UsIG5vIGdyb3VwaW5nLgorICBzaG91bGRCZSgzLCBvZmYuZm9ybWF0KDEyMykubGVuZ3Ro
LCBtc2cpOworICBzaG91bGRCZSg0LCBvZmYuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAg
c2hvdWxkQmUoNSwgb2ZmLmZvcm1hdCgxMjM0NSkubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg2
LCBvZmYuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3LCBvZmYuZm9y
bWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworCisvLyBDaGVjayBmYWxzZQorYWxsLmZv
ckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgIGxldCBhbHdheXMgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJhbHdheXMifSk7CisgIGxldCBtc2cgPSAibG9j
YWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ2Fsd2F5cyciOworICBzaG91bGRCZSgz
LCBhbHdheXMuZm9ybWF0KDEyMykubGVuZ3RoKTsKKyAgLy8gSW4gdXNlR3JvdXBpbmc6ICJhbHdh
eXMiLCBoYXMgZ3JvdXBpbmcgd2hlbiBtb3JlIHRoYW4gMyBkaWdpdHMuLgorICBzaG91bGRCZSg0
ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDUgKyAx
LCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBh
bHdheXMuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwgYWx3
YXlzLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsKKworLy8gQ2hlY2sgIm1pbjIi
CithbGwuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgbGV0IGFsd2F5cyA9IG5ldyBJbnRs
Lk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogIm1pbjIifSk7CisgIGxldCBtc2cg
PSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ21pbjInIjsKKyAgc2hvdWxk
QmUoMywgYWx3YXlzLmZvcm1hdCgxMjMpLmxlbmd0aCk7CisgIC8vIEluIHVzZUdyb3VwaW5nOiAi
bWluMiIsIG5vIGdyb3VwaW5nIGZvciA0IGRpZ2l0cyBidXQgaGFzIGdyb3VwaW5nCisgIC8vIHdo
ZW4gbW9yZSB0aGFuIDQgZGlnaXRzLi4KKyAgc2hvdWxkQmUoNCwgYWx3YXlzLmZvcm1hdCgxMjM0
KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDUgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5s
ZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVu
Z3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwgYWx3YXlzLmZvcm1hdCgxMjM0NTY3KS5sZW5n
dGgsIG1zZyk7Cit9KTsKKworLy8gQ2hlY2sgImF1dG8iCittZ2QxLmZvckVhY2goZnVuY3Rpb24o
bG9jYWxlKSB7CisgIGxldCBhdXRvID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3Vz
ZUdyb3VwaW5nOiAiYXV0byJ9KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAi
IHVzZUdyb3VwaW5nOiAnYXV0byciOworICBzaG91bGRCZSgzLCBhdXRvLmZvcm1hdCgxMjMpLmxl
bmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNCArIDEsIGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwg
bXNnKTsKKyAgc2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7
CisgIHNob3VsZEJlKDYgKyAxLCBhdXRvLmZvcm1hdCgxMjM0NTYpLmxlbmd0aCwgbXNnKTsKKyAg
c2hvdWxkQmUoNyArIDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwor
bWdkMi5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICBsZXQgYXV0byA9IG5ldyBJbnRsLk51
bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImF1dG8ifSk7CisgIGxldCBtc2cgPSAi
bG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ2F1dG8nIjsKKyAgc2hvdWxkQmUo
MywgYXV0by5mb3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgIC8vIEluIHVzZUdyb3VwaW5nOiAi
YXV0byIsIHNpbmNlIHRoZXNlIGxvY2FsZXMgaGFzCisgIC8vIG1pbmltdW1Hcm91cGluZ0RpZ2l0
c3siMiJ9LCBubyBncm91cGluZyBmb3IgNCBkaWdpdHMgYnV0IGhhcyBncm91cGluZworICAvLyB3
aGVuIG1vcmUgdGhhbiA0IGRpZ2l0cy4uCisgIHNob3VsZEJlKDQsIGF1dG8uZm9ybWF0KDEyMzQp
Lmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5sZW5n
dGgsIG1zZyk7CisgIHNob3VsZEJlKDYgKyAxLCBhdXRvLmZvcm1hdCgxMjM0NTYpLmxlbmd0aCwg
bXNnKTsKKyAgc2hvdWxkQmUoNyArIDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNn
KTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2Fk
NjZmMGFlYmNiZmQ1NThhNWU1MzEwMjY0YmM1Li4zYzMwMWY1NzhhNWRiOTMxNzQxMTYyMTkwMGZk
NGQ3MWE1YTY1NWQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsOSAr
NTMsMTMgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxl
RGlmZmVyZW5jZXMpIHsKICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAg
ICAgICAgICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAg
ICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VH
cm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIHVzZUdyb3VwaW5nOiAiYXV0byIsCiAgICAgICAg
ICAgICBub3RhdGlvbjogInN0YW5kYXJkIiwKLSAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0
byIKKyAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGlu
Z01vZGU6ICJoYWxmRXhwYW5kIiwKKyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50OiAxLAor
ICAgICAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91
bmRpbmdQcmlvcml0eTogImF1dG8iLAogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWdu
KGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5n
aWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTE4NCw5ICsxODgsOSBAQCBmdW5jdGlvbiB0ZXN0TnVt
YmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhy
b3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0
czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJv
Y2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91
cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNl
R3JvdXBpbmc6ICJhbHdheXMifV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQo
SW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTog
J2VuJywgdXNlR3JvdXBpbmc6IGZhbHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJG
b3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7
bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0
TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjIn
fSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3Vs
ZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkg
eyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMg
b2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDM5LDcgQEAg
ZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5j
ZXMpIHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9u
cygpOwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2lt
YWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJt
YXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0
YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShvcHRpb25zKSwgYHsibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1h
bCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1h
eGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJz
dGFuZGFyZCIsInNpZ25EaXNwbGF5IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQi
LCJyb3VuZGluZ0luY3JlbWVudCI6MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3Vu
ZGluZ1ByaW9yaXR5IjoiYXV0byJ9YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1
bGVzLXNlbGVjdHJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxl
Y3RyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2ZkZTc4ZWFiMTI1MzI3ZGQwZDMyOTZiZDI2ZWI3YWQx
ZGZlY2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxl
cy1zZWxlY3RyYW5nZS5qcwpAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitpZiAoSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFu
Z2UpIHsKKyAgICBjb25zdCBwbCA9IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCJzbCIpOworICAgIHNo
b3VsZEJlKCJmZXciLCBwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442511</attachid>
            <date>2021-10-26 11:18:01 -0700</date>
            <delta_ts>2021-10-26 15:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026111800.patch</filename>
            <type>text/plain</type>
            <size>147763</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OGE2YmE5M2Q4OGQwYTgxN2IxNzljNmM5ZGRhOWNlMjI1NWNjY2E5Li5jZTNkM2JhMmFiMDRmMTQ3
OTdmNWY5YjljZTZkZjk1ZGVhMjliNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpw
YXJ0VHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdNb2RlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGluZ1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6SW50bE1hdGhlbWF0aWNhbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjplbnN1cmVOb25Eb3VibGUpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsTWF0aGVt
YXRpY2FsVmFsdWU6OnRyeUdldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6Z2V0U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1iZXJGb3JtYXRE
aWdpdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFsUnVsZXNE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6c2VsZWN0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0cnlF
eHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5pdHMgZnJvbSAyMzIwMTkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2NlMjkzNDIwNDI4
OTNmMmJkZi4uYWY5NDc3ZmFlNWE2YjY1YTQ1YmQ2YTU1MTRlODI1Mzk3NjdiMjQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCUUzMDcxNzhD
MjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2
NDQgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmggKi87IH07CiAJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
M0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovOyB9OworCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuY3BwICovOyB9OwogCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUg
LyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTMwRThBNTYyNkRFMkU0ODAwREE0OTE1IC8q
IFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmgg
Ki87IH07CiAJCUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMEU4QTUxMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCAqLzsgfTsKQEAgLTE5MTYsNiArMTkxNyw3IEBACiAJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlB
MCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAv
KiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25z
dHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRJbmxpbmVzLmggKi87IH07CisJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBC
MTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJG
OUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTExODM0LDYgKzExODM2LDgg
QEAKIAkJCQk1QzQxOTY2MjIyNzBFMDAwMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTlBRUMzMjU1OTQ1
N0YwMEI3ODQ4NSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM2NjQ0MUUyNTQ0MDlCMzAwMDE4NzZGIC8qIEludGxMaXN0Rm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzNzhEQzhEMjcyNzYyOTQwMDQyN0IwQiAvKiBJbnRsTnVtYmVyRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1
cmFsUnVsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhE
IC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEU4NzkwMjU0Qjk3
ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlF
MUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUwZTIzYTJmMzZjMTI1ZTk2N2YwZWZh
NWM0ZDliOThkYTg4Y2VjMTMuLmViMDk3YWQyZjJlMDY5MWQ0OWUzMTc2YmZmNzkzMTk1YjY2NGIw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgzNiwxMSArODM2LDExIEBAIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5jcHAKLXJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKK3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9ISURFX0RSQUZUX0FQSSdzIGVm
ZmVjdCBpbiB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKLXJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIEBuby11bmlmeSAvLyBDb25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3Qg
dG8gdGhpcyBmaWxlLgogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKaW5kZXggOWRjMGZlMmI2MDQ3ZmIyZTk4NTkwNWYyZGU2MzEzYzI3ZDJk
MDg4NC4uOTdiMjNlNWViZTUyOWJlNjQ5NzFhNzNjYzdlNWM2NTY4YmY0Yjg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xMzIsMTMgKzEzMiwy
MCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIEpTQmlnSW50KiB0aGlzVmFsdWUgPSB0b1RoaXNCaWdJbnRW
YWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkpOwogICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9y
bWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3ODI4ZDAwOGE4NTM0NjFlNDhlMzZkMmZi
ZWE2MWM3MDk1NzZkZGFmLi40Y2VkNTI1NzBjZDk1ZTQ2NTQwYmRjMDg1NjdlODBiOWI3YzkxMWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHJvdW5kaW5nSW5jcmVtZW50KSBcCiAgICAgbWFjcm8ocm91bmRpbmdNb2RlKSBcCisgICAg
bWFjcm8ocm91bmRpbmdQcmlvcml0eSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3Jv
KHNlY29uZCkgXAogICAgIG1hY3JvKHNlY29uZHMpIFwKICAgICBtYWNybyhzZWdtZW50KSBcCisg
ICAgbWFjcm8oc2VsZWN0UmFuZ2UpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKQEAgLTI0OSw2ICsyNTEsNyBAQAogICAgIG1h
Y3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9QcmVjaXNpb24pIFwKICAgICBtYWNy
byh0b1N0cmluZykgXAorICAgIG1hY3JvKHRyYWlsaW5nWmVyb0Rpc3BsYXkpIFwKICAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRl
eCBmYzMyMzcwMzIwMjJiNGM2ZDY3ZGQ4MTU1OWVjMzM1YjU2YmQwZGZmLi5mMmY5MjhhMTQyZjkw
MGZkMDg3NTE0NDZhZjU4ODYwYmM4M2FkMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzUsOCArMzUsMjAgQEAKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCisjaWZkZWYgVV9ISURFX0RSQUZU
X0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNl
bmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1
bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5lIFVfSElERV9E
UkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEludGxOdW1i
ZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdCkgfTsKQEAgLTQ1LDYg
KzU3LDIyIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdHRlciogZm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
IHVudW1mX2Nsb3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX1JBTkdFX0ZPUk1BVFRFUikKK3ZvaWQgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6
b3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sKKyAgICBpZiAo
Zm9ybWF0dGVyKQorICAgICAgICB1bnVtcmZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRpZgor
CiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAg
c2l6ZV90IHNpemU7CkBAIC0yMTQsNiArMjQyLDU2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
CiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21p
bmF0b3JVbml0LnZhbHVlKCkpOwogfQogCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0
eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKKyAgICAgICAg
Y2FzZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAg
ICAgICAgcmV0dXJuICJpbmZpbml0eSJfczsKKyAgICAgICAgY2FzZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWU6Ok51bWJlclR5cGU6OkludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIi
X3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAidW5rbm93biJfczsKKyAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6CisgICAgICAg
IHJldHVybiAiZnJhY3Rpb24iX3M7CisgICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX0ZJ
RUxEOgorICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5U
X1NZTUJPTF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRvciJfczsKKyAg
ICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVu
dE1pbnVzU2lnbiJfczsKKyAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6CisgICAgICAgIHJl
dHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOworICAgIGNhc2UgVU5VTV9HUk9VUElOR19TRVBBUkFU
T1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZ3JvdXAiX3M7CisgICAgY2FzZSBVTlVNX0NVUlJF
TkNZX0ZJRUxEOgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIGNhc2UgVU5VTV9Q
RVJDRU5UX0ZJRUxEOgorICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQiLCB3ZSBzaG91
bGQgcmVwb3J0IGFzIHVuaXQuCisgICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90ZXN0L2ludGw0
MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQtZW4tVVMuanMK
KyAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZTo6VW5pdCkg
PyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKKyAgICBjYXNlIFVOVU1fU0lHTl9GSUVMRDoK
KyAgICAgICAgcmV0dXJuIHNpZ24gPyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklU
X0ZJRUxEOgorICAgICAgICByZXR1cm4gInVuaXQiX3M7CisgICAgY2FzZSBVTlVNX0NPTVBBQ1Rf
RklFTEQ6CisgICAgICAgIHJldHVybiAiY29tcGFjdCJfczsKKyNlbmRpZgorICAgIC8vIFRoZXNl
IHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRo
ZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCisgICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24n
dCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBh
biAidW5rbm93biIuCisgICAgY2FzZSBVTlVNX1BFUk1JTExfRklFTEQ6CisgICAgLy8gQW55IG5l
d2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0
IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQuCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuICJ1bmtub3duIl9zOworICAgIH0KKyAgICByZXR1cm4gInVua25vd24iX3M7Cit9CisK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewpAQCAtMzA5LDE0ICszODcsNTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRp
b25zLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCBtX25vdGF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCisgICAgbV9yb3VuZGluZ0luY3JlbWVudCA9IGludGxOdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwgMSwg
NTAwMCwgMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHJvdW5kaW5nSW5jcmVtZW50Q2FuZGlkYXRl
c1tdID0geworICAgICAgICAxLCAyLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwg
NTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCisgICAgfTsKKyAgICBib29sIGludmFsaWRSb3Vu
ZGluZ0luY3JlbWVudCA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBjYW5kaWRhdGUgOiByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMpIHsKKyAgICAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1l
bnQgPT0gY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChp
bnZhbGlkUm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyb3VuZGluZ0luY3JlbWVudCBtdXN0IGJlIG9uZSBvZiAxLCAyLCA1
LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1
MDAwIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yb3VuZGluZ0luY3Jl
bWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVt
ZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Ry
YWlsaW5nWmVyb0Rpc3BsYXkgPSBpbnRsT3B0aW9uPFRyYWlsaW5nWmVyb0Rpc3BsYXk+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwg
eyB7ICJhdXRvIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvIH0sIHsgInN0cmlwSWZJbnRl
Z2VyIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlciB9IH0sICJ0cmFpbGlu
Z1plcm9EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiIG9yIFwic3RyaXBJZkludGVnZXJc
IiJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKwogICAgIG1fY29tcGFjdERpc3BsYXkgPSBpbnRsT3B0aW9uPENv
bXBhY3REaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb21wYWN0RGlzcGxheSIpLCB7IHsgInNob3J0Il9zLCBDb21wYWN0RGlzcGxheTo6
U2hvcnQgfSwgeyAibG9uZyJfcywgQ29tcGFjdERpc3BsYXk6OkxvbmcgfSB9LCAiY29tcGFjdERp
c3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJzaG9ydFwiIG9yIFwibG9uZ1wiIl9zLCBDb21wYWN0RGlz
cGxheTo6U2hvcnQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAK
LSAgICBUcmlTdGF0ZSB1c2VHcm91cGluZyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3VwaW5nIikpOwor
ICAgIFVzZUdyb3VwaW5nIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5nOjpBdXRvOwor
ICAgIGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKKyAgICAgICAgZGVm
YXVsdFVzZUdyb3VwaW5nID0gVXNlR3JvdXBpbmc6Ok1pbjI7CisKKyAgICBtX3VzZUdyb3VwaW5n
ID0gaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbjxVc2VHcm91cGluZz4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgVXNlR3Jv
dXBpbmc6OkFsd2F5cywgVXNlR3JvdXBpbmc6OkZhbHNlLCB7IHsgIm1pbjIiX3MsIFVzZUdyb3Vw
aW5nOjpNaW4yIH0sIHsgImF1dG8iX3MsIFVzZUdyb3VwaW5nOjpBdXRvIH0sIHsgImFsd2F5cyJf
cywgVXNlR3JvdXBpbmc6OkFsd2F5cyB9IH0sICJ1c2VHcm91cGluZyBtdXN0IGJlIGVpdGhlciB0
cnVlLCBmYWxzZSwgXCJtaW4yXCIsIFwiYXV0b1wiLCBvciBcImFsd2F5c1wiIl9zLCBkZWZhdWx0
VXNlR3JvdXBpbmcpOworCisgICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2lnbkRpc3Bs
YXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNp
Z25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAibmV2ZXIi
X3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5OjpBbHdh
eXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSwgeyAibmVn
YXRpdmUiX3MsIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZSB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJl
IGVpdGhlciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBcImV4Y2VwdFplcm9cIiwg
b3IgXCJuZWdhdGl2ZVwiIl9zLCBTaWduRGlzcGxheTo6QXV0byk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmcg
IT0gVHJpU3RhdGU6OkZhbHNlOwogCi0gICAgbV9zaWduRGlzcGxheSA9IGludGxPcHRpb248U2ln
bkRpc3BsYXk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInNpZ25EaXNwbGF5IiksIHsgeyAiYXV0byJfcywgU2lnbkRpc3BsYXk6OkF1dG8gfSwgeyAi
bmV2ZXIiX3MsIFNpZ25EaXNwbGF5OjpOZXZlciB9LCB7ICJhbHdheXMiX3MsIFNpZ25EaXNwbGF5
OjpBbHdheXMgfSwgeyAiZXhjZXB0WmVybyJfcywgU2lnbkRpc3BsYXk6OkV4Y2VwdFplcm8gfSB9
LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwgXCJhbHdh
eXNcIiwgb3IgXCJleGNlcHRaZXJvXCIiX3MsIFNpZ25EaXNwbGF5OjpBdXRvKTsKKyAgICBtX3Jv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwgeworICAgICAgICAgICAgeyAiY2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sCisgICAgICAgICAgICB7ICJmbG9vciJfcywgUm91
bmRpbmdNb2RlOjpGbG9vciB9LAorICAgICAgICAgICAgeyAiZXhwYW5kIl9zLCBSb3VuZGluZ01v
ZGU6OkV4cGFuZCB9LAorICAgICAgICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZDZWlsIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZDZWls
IH0sCisgICAgICAgICAgICB7ICJoYWxmRmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
IH0sCisgICAgICAgICAgICB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSwKKyAgICAgICAgICAgIHsgImhhbGZUcnVuYyJfcywgUm91bmRpbmdNb2RlOjpIYWxmVHJ1
bmMgfSwKKyAgICAgICAgICAgIHsgImhhbGZFdmVuIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFdmVu
IH0KKyAgICAgICAgfSwgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJm
bG9vclwiLCBcImV4cGFuZFwiLCBcInRydW5jXCIsIFwiaGFsZkNlaWxcIiwgXCJoYWxmRmxvb3Jc
IiwgXCJoYWxmRXhwYW5kXCIsIFwiaGFsZlRydW5jXCIsIG9yIFwiaGFsZkV2ZW5cIiJfcywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3Ry
aW5nKHJlc29sdmVkLmRhdGFMb2NhbGUsICItdS1udS0iLCBtX251bWJlcmluZ1N5c3RlbSkudXRm
OCgpOwpAQCAtMzI5LDcgKzQ0Niw0OCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWls
ZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKworICAgIHN3aXRjaCAobV9yb3VuZGluZ01vZGUpIHsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1jZWlsaW5nIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpGbG9vcjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1mbG9vciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6RXhw
YW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLXVwIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1kb3duIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDogeworICAgICAgICAvLyBPbmx5
IElDVTY5fiBzdXBwb3J0cyBoYWxmLWNlaWxpbmcuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5r
ZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvY29tbWl0L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0
NGFkMDZiMjEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1jZWls
aW5nIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
InJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAvLyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3I6IHsKKyAgICAgICAg
Ly8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsLiBJZ25vcmUgdGhpcyBvcHRpb24gaWYg
bGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRmZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3
NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkp
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYt
Zmxvb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8vIERlZmF1bHQgb3B0aW9uLgorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtZG93biIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW46CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1ldmVuIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2lt
YWw6CkBAIC0zOTEsMjcgKzU0OSw3MyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOyArK2kpCiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGlu
Z1R5cGUpIHsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIv
ZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9u
LXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMn
KTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSkgewor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcHJlY2lzaW9uLWluY3JlbWVudC8iKTsK
KyAgICAgICAgYXV0byBzdHJpbmcgPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgMTA+PihtX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKG1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID49IHN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoIjAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gc3RyaW5nLnNpemUoKSk7ICsraSkKKyAgICAgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5vbkZyYWN0aW9uID0gc3RyaW5n
LnNpemUoKSAtIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBt
X21heGltdW1GcmFjdGlvbkRpZ2l0cyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlw
ZTo6RnJhY3Rpb25EaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpT
aWduaWZpY2FudERpZ2l0czogeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Vu
aWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVt
YmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgorICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgICAgIC8vIEJlZm9yZSBJbnRsLk51bWJlckZv
cm1hdCB2MywgaXQgd2FzIENvbXBhY3RSb3VuZGluZyBtb2RlLCB3aGVyZSB3ZSBkbyBub3QgY29u
ZmlndXJlIGFueXRoaW5nLgorICAgICAgICAgICAgLy8gU28sIGlmIGxpbmtlZCBJQ1UgaXMgfjY4
LCB3ZSBkbyBub3RoaW5nLgorICAgICAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2OSkgeworICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvY29tbWl0L2Q3ZGI2YzFmODY1NWJiNTMxNTM2OTViMDlhNTAwMjlmZDA0YTgzNjQK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Js
b2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
cHJlY2lzaW9uCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJhY3Rp
b25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGlt
dW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBt
X21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZChtX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9u
ID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgfQotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2ln
bmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvbgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgLSBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworCisgICAgLy8gQ29uZmlndXJlIHRoaXMganVzdCBh
ZnRlciBwcmVjaXNpb24uCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3RyYWlsaW5nLXplcm8tZGlzcGxheQorICAgIHN3aXRjaCAobV90cmFpbGluZ1plcm9EaXNw
bGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6Ci0g
ICAgICAgIC8vIERvIG5vdCBzZXQgYW55dGhpbmcuCisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgdHJh
aWxpbmcgemVybyBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2Vz
IG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC9iNzljMjk5ZjkwZDQwMjNhYzIzN2RiM2QwMzM1ZDU2OGJmMjFjZDM2Cisg
ICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIvdyIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ2MiwyMCArNjY2LDU0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgorICAgICAg
ICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBuZWdhdGl2ZSBzaWduIGRpc3BsYXkuIElnbm9yZSB0
aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzFhYTBkYWQ4ZTA2ZWNj
OTliZmY0NDJkZDM3ZjZkYWEyZDM5ZDlhNWEKKyAgICAgICAgaWYgKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCisgICAgICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZy1uZWdhdGl2
ZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIiBzaWduLW5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFtX3VzZUdyb3VwaW5nKQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90
YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL2lzc3Vlcy8zCisgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9y
bWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2dyb3VwaW5nCisgICAgc3dpdGNoIChtX3Vz
ZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1vZmYiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBVc2VHcm91cGluZzo6TWluMjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdy
b3VwLW1pbjIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGdyb3VwLWF1dG8iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb24tYWxpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAg
ICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9u
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNv
bnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVyRm9ybWF0dGVyID0g
c3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVy
Pih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUoc2tlbGV0b25WaWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4o
dW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5H
RV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVu
dW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0Vf
QVVUTywgVU5VTV9JREVOVElUWV9GQUxMQkFDS19BUFBST1hJTUFURUxZLCBkYXRhTG9jYWxlV2l0
aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiAjZWxzZQogICAgIFVOdW1iZXJGb3JtYXRTdHlsZSBzdHlsZSA9IFVO
VU1fREVGQVVMVDsKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKQEAgLTUyOSwxMiArNzY3LDEzIEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgY2FzZSBTaWduRGlzcGxheTo6TmV2ZXI6CiAg
ICAgY2FzZSBTaWduRGlzcGxheTo6QWx3YXlzOgogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkV4Y2Vw
dFplcm86CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CiAgICAgICAgIC8vIElnbm9y
ZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVt
YmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxl
V2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Ns
b3NlPj4odW51bV9vcGVuKHN0eWxlLCBudWxscHRyLCAwLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lv
bnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAgICByZXR1cm47CkBAIC01NTks
MTEgKzc5OCwyNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRT
LCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4
aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpDb21wYWN0Um91bmRpbmc6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJ
Q1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRsUm91
bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNp
bmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc3dpdGNoIChtX3VzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6
RmFsc2U6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBV
TlVNX0dST1VQSU5HX1VTRUQsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6TWluMjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3Jv
dXBpbmc6OkF1dG86CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5
czoKKyAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1f
R1JPVVBJTkdfVVNFRCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3Vz
ZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwg
VU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JPVU5EX0hBTEZVUCk7CiAjZW5kaWYKIH0KQEAgLTU3
OCw3ICs4MzMsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbgogI2lmIEhBVkUoSUNVX1VfTlVN
QkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
c3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVy
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVtZl9mb3JtYXREb3Vi
bGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCks
ICZzdGF0dXMpOwpAQCAtNTkzLDI5ICs4NDgsMjYgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24K
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwog
I2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0bnVtYmVyCi1KU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFs
dWUpIGNvbnN0CitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzdHJpbmcgPSB2YWx1ZS0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LQotICAgIEFTU0VSVChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUkoKSk7Ci0g
ICAgYXV0byogcmF3U3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5n
LmNoYXJhY3RlcnM4KCkpOworICAgIHZhbHVlLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0
IGF1dG8mIHN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gYnVmZmVyOwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQo
bV9udW1iZXJGb3JtYXR0ZXIpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRO
dW1iZXIsIFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMp
KTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVk
TnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJ
bnQuIl9zKTsKLSAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgp
LCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3Rh
dHVzKTsKKyAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCBz
dHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQu
Il9zKTsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVz
dWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVmZmVyKTsKQEAgLTYyMywxMyAr
ODc1LDg5IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJf
cyk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJlckZvcm1hdCk7Ci0gICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0
cik7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9m
b3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAjZW5kaWYKLSAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyhidWZmZXIpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAg
ICBpZiAoc3RkOjppc25hbihzdGFydCkgfHwgc3RkOjppc25hbihlbmQpKQorICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgbnVtYmVycyBh
cmUgb3V0IG9mIHJhbmdlIl9zKTsKKworICAgIGlmIChlbmQgPCBzdGFydCkKKyAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2Vy
IHRoYW4gZW5kIl9zKTsKKworICAgIGlmIChzdGQ6OnNpZ25iaXQoZW5kKSAmJiAhZW5kICYmIHN0
YXJ0ID49IDApCisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisKKyAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVG
b3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVt
cmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9u
dW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworCisgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZfcmVzdWx0QXNWYWx1ZShyYW5n
ZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgYSByYW5nZSJfcyk7CisKKyAgICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgY29uc3QgVUNo
YXIqIHN0cmluZyA9IHVmbXR2YWxfZ2V0U3RyaW5nKGZvcm1hdHRlZFZhbHVlLCAmbGVuZ3RoLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHN0cmluZywgbGVuZ3RoKSk7
Cit9CisKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYgc3RhcnQsIEludGxNYXRo
ZW1hdGljYWxWYWx1ZSYmIGVuZCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
QVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgaWYgKHN0YXJ0Lm51bWJlclR5
cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTiB8fCBlbmQubnVt
YmVyVHlwZSgpID09IEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6TmFOKQorICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQg
bnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zKTsKKworICAgIHN0YXJ0LmVuc3VyZU5vbkRvdWJs
ZSgpOworICAgIGNvbnN0IGF1dG8mIHN0YXJ0U3RyaW5nID0gc3RhcnQuZ2V0U3RyaW5nKCk7CisK
KyAgICBlbmQuZW5zdXJlTm9uRG91YmxlKCk7CisgICAgY29uc3QgYXV0byYgZW5kU3RyaW5nID0g
ZW5kLmdldFN0cmluZygpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2Us
IElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1
cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworCisgICAgdW51bXJmX2Zvcm1hdERlY2ltYWxSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVy
LmdldCgpLCBzdGFydFN0cmluZy5kYXRhKCksIHN0YXJ0U3RyaW5nLmxlbmd0aCgpLCBlbmRTdHJp
bmcuZGF0YSgpLCBlbmRTdHJpbmcubGVuZ3RoKCksIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAg
IGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFu
Z2UiX3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0IFVDaGFyKiBzdHJp
bmcgPSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisK
KyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0aCkpOworfQorI2Vu
ZGlmCisKIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBz
dHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CkBAIC03MjcsMTEgKzEwNTUsODEgQEAgQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5
IHNpZ25EaXNwbGF5KQogICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKICAgICBjYXNlIFNpZ25E
aXNwbGF5OjpFeGNlcHRaZXJvOgogICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8iX3M7CisgICAg
Y2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CisgICAgICAgIHJldHVybiAibmVnYXRpdmUiX3M7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
TW9kZVN0cmluZyhSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIHN3aXRjaCAocm91
bmRpbmdNb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAgICAgIHJldHVy
biAiY2VpbCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHJldHVy
biAiZmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgcmV0
dXJuICJleHBhbmQiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBy
ZXR1cm4gInRydW5jIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDoKKyAgICAg
ICAgcmV0dXJuICJoYWxmQ2VpbCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29y
OgorICAgICAgICByZXR1cm4gImhhbGZGbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZDoKKyAgICAgICAgcmV0dXJuICJoYWxmRXhwYW5kIl9zOworICAgIGNhc2UgUm91
bmRpbmdNb2RlOjpIYWxmVHJ1bmM6CisgICAgICAgIHJldHVybiAiaGFsZlRydW5jIl9zOworICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJf
czsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxp
bmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3Bs
YXkpCit7CisgICAgc3dpdGNoICh0cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFp
bGluZ1plcm9EaXNwbGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2Fz
ZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgcmV0dXJuICJz
dHJpcElmSW50ZWdlciJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBlIHJvdW5kaW5n
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHJvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5k
aW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWdu
aWZpY2FudERpZ2l0czoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgSW50bFJv
dW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJtb3JlUHJlY2lzaW9u
Il9zOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAg
cmV0dXJuICJsZXNzUHJlY2lzaW9uIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0pTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdyb3Vw
aW5nKQoreworICAgIHN3aXRjaCAodXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5n
OjpGYWxzZToKKyAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CisgICAgY2FzZSBVc2VH
cm91cGluZzo6TWluMjoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1p
bjIiX3MpOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJhdXRvIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdh
eXM6CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOwor
ICAgIH0KKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25z
CiBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CkBAIC03NjQsMTQgKzExNjIsMjMgQEAgSlNPYmpl
Y3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2ln
bmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNp
Z25pZmljYW50RGlnaXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5n
VHlwZTo6Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVBy
ZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0
aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRp
Z2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGln
aXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidXNlR3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91
cGluZyIpLCB1c2VHcm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOwogICAg
IGlmIChtX25vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3Bs
YXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBh
Y3REaXNwbGF5KSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRp
c3BsYXlTdHJpbmcobV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBy
b3VuZGluZ01vZGVTdHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1iZXIobV9y
b3VuZGluZ0luY3JlbWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dHJhaWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0cmFp
bGluZ1plcm9EaXNwbGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKKyAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlw
ZSkpKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtNzgwLDUyICsxMTg3LDcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlv
biogZm9ybWF0KQogICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwogfQog
Ci1zdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMg
ZmllbGQsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCi17Ci0g
ICAgc3dpdGNoIChmaWVsZCkgewotICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgotICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKLSAg
ICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiaW5m
aW5pdHkiX3M7Ci0gICAgICAgIHJldHVybiAiaW50ZWdlciJfczsKLSAgICBjYXNlIFVOVU1fRlJB
Q1RJT05fRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7Ci0gICAgY2FzZSBVTlVN
X0RFQ0lNQUxfU0VQQVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7Ci0g
ICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJleHBv
bmVudFNlcGFyYXRvciJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKLSAg
ICAgICAgcmV0dXJuICJleHBvbmVudE1pbnVzU2lnbiJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05F
TlRfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOwotICAgIGNhc2Ug
VU5VTV9HUk9VUElOR19TRVBBUkFUT1JfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZ3JvdXAiX3M7
Ci0gICAgY2FzZSBVTlVNX0NVUlJFTkNZX0ZJRUxEOgotICAgICAgICByZXR1cm4gImN1cnJlbmN5
Il9zOwotICAgIGNhc2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICAvLyBJZiB0aGUgc3R5
bGUgaXMgInVuaXQiLCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCi0gICAgICAgIC8vIEpTVGVz
dHMvdGVzdDI2Mi90ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1Bh
cnRzL3BlcmNlbnQtZW4tVVMuanMKLSAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVy
Rm9ybWF0OjpTdHlsZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKLSAgICBj
YXNlIFVOVU1fU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkg
PyAibWludXNTaWduIl9zIDogInBsdXNTaWduIl9zOwotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKLSAgICBjYXNlIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEOgotICAgICAgICByZXR1
cm4gInVuaXQiX3M7Ci0gICAgY2FzZSBVTlVNX0NPTVBBQ1RfRklFTEQ6Ci0gICAgICAgIHJldHVy
biAiY29tcGFjdCJfczsKLSNlbmRpZgotICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBi
ZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9w
dGlvbnMuCi0gICAgLy8gSWYgdGhleSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBv
ZiBrbm93biBwYXJ0IHR5cGVzLCBzbyBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCi0gICAgY2Fz
ZSBVTlVNX1BFUk1JTExfRklFTEQ6Ci0gICAgLy8gQW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUg
VU51bWJlckZvcm1hdEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVu
a25vd24iIHBhcnQuCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwot
ICAgIH0KLSAgICByZXR1cm4gInVua25vd24iX3M7Ci19Ci0KLXZvaWQgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmll
bGRJdGVyYXRvciYgaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3Zv
aWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxW
YWx1ZTo6TnVtYmVyVHlwZSBudW1iZXJUeXBlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50
bEZpZWxkSXRlcmF0b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg2OCw3ICsxMjMwLDcgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3R5bGUKICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4
XS50eXBlOwogICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZp
ZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJy
ZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZp
ZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51
bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKKyAgICAgICAgYXV0
byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmlu
ZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxk
VHlwZSksIHN0eWxlLCBzaWduLCBudW1iZXJUeXBlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVl
ID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0g
c3RhcnRJbmRleCk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CkBAIC04OTQsNyArMTI1Niw3IEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogI2lmIEhBVkUoSUNV
X1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwotICAg
IGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIs
IFVGb3JtYXR0ZWROdW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAg
ICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVy
LCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
KTsKICAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVl
LCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwpAQCAtOTE1LDE2ICsxMjc3LDYzIEBA
IEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3Io
KmZpZWxkSXRyLmdldCgpKTsKICNlbmRpZgogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJp
bmcocmVzdWx0KTsKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3Vs
dCkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgZm9ybWF0
VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmlu
ZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2Jq
ZWN0LCBtX3N0eWxlLCBzdGQ6OnNpZ25iaXQodmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6
Om51bWJlclR5cGVGcm9tRG91YmxlKHZhbHVlKSwgcmVzdWx0U3RyaW5nLCBpdGVyYXRvciwgcGFy
dHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICByZXR1cm4g
cGFydHM7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCitKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYgdmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIHZhbHVlLmVuc3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0
cmluZyA9IHZhbHVlLmdldFN0cmluZygpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3Np
dGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRl
cl9vcGVuKCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4g
ZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVz
dWx0OworICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CisgICAgYXV0byBmb3JtYXR0ZWRO
dW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVt
Zl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICB1bnVtZl9m
b3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJp
bmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKworICAgIHN0YXR1
cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9y
bWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVs
ZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVz
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OworCisgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsKKwor
ICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKFdURk1vdmUocmVzdWx0KSk7CisKKyAgICBK
U0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGln
dW91cyksIDApOworICAgIGlmICghcGFydHMpCisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJu
YWwoZ2xvYmFsT2JqZWN0LCBtX3N0eWxlLCB2YWx1ZS5zaWduKCksIHZhbHVlLm51bWJlclR5cGUo
KSwgcmVzdWx0U3RyaW5nLCBpdGVyYXRvciwgcGFydHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gcGFydHM7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmgKaW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3NjlhOTE0OWRiY2E4NTdk
ZS4uOGViZmI0ZjEzOTYzYjYwYmYwMTFlOTZlZDU4MjE5ZDUyM2QwMDcwNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMzgsMjAg
KzM4LDEwNSBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1B
VFRFUikKLSNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNpZiAhZGVmaW5l
ZChIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1VfVkVSU0lPTl9N
QUpPUl9OVU0gPj0gNjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVS
IDEKKyNlbmRpZgogI2VuZGlmCiAKK3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyOworc3RydWN0IFVO
dW1iZXJSYW5nZUZvcm1hdHRlcjsKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEludGxGaWVs
ZEl0ZXJhdG9yOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBSZWxldmFudEV4
dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVp
bnQ4X3QgeyBGcmFjdGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGlu
ZyB9OworZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9uRGln
aXRzLCBTaWduaWZpY2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9Owor
ZW51bSBjbGFzcyBJbnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRvLCBNb3JlUHJl
Y2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVpbnQ4
X3QgeyBTdGFuZGFyZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKIHRlbXBs
YXRlPHR5cGVuYW1lIEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhK
U0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0
LCBJbnRsTm90YXRpb24pOwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorc3Ry
dWN0IFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdHRlciopOworfTsKKyNlbmRpZgorCisjaWYgSEFWRShJ
Q1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRl
ckRlbGV0ZXIgeworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXIqKTsKK307CisjZW5kaWYKKworY2xhc3MgSW50bE1hdGhlbWF0aWNhbFZh
bHVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChJbnRsTWF0aGVtYXRpY2FsVmFsdWUp
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgTnVtYmVyVHlwZSB7IEludGVnZXIsIEluZmluaXR5
LCBOYU4sIH07CisgICAgdXNpbmcgVmFsdWUgPSBzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBDU3RyaW5n
PjsKKworICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxp
Y2l0IEludGxNYXRoZW1hdGljYWxWYWx1ZShkb3VibGUgdmFsdWUpCisgICAgICAgIDogbV9udW1i
ZXJUeXBlKG51bWJlclR5cGVGcm9tRG91YmxlKHZhbHVlKSkKKyAgICAgICAgLCBtX3NpZ24oc3Rk
OjpzaWduYml0KHZhbHVlKSkKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisg
ICAgZXhwbGljaXQgSW50bE1hdGhlbWF0aWNhbFZhbHVlKE51bWJlclR5cGUgbnVtYmVyVHlwZSwg
Ym9vbCBzaWduLCBDU3RyaW5nIHZhbHVlKQorICAgICAgICA6IG1fbnVtYmVyVHlwZShudW1iZXJU
eXBlKQorICAgICAgICAsIG1fc2lnbihzaWduKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZW5zdXJlTm9uRG91YmxlKCkKKyAgICB7CisgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4obV92YWx1ZSkpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAobV9udW1iZXJUeXBlKSB7CisgICAgICAgICAgICBjYXNlIE51bWJlclR5cGU6
OkludGVnZXI6CisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IFN0cmluZzo6bnVtYmVyKHN0ZDo6
Z2V0PGRvdWJsZT4obV92YWx1ZSkpLmFzY2lpKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIE51bWJlclR5cGU6Ok5hTjoKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
ID0gQ1N0cmluZygibmFuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE51bWJlclR5cGU6OkluZmluaXR5OgorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBDU3Ry
aW5nKG1fc2lnbiA/ICItaW5maW5pdHkiIDogImluZmluaXR5Iik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOdW1iZXJUeXBl
IG51bWJlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJlclR5cGU7IH0KKyAgICBib29sIHNp
Z24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
dHJ5R2V0RG91YmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPGRvdWJsZT4obV92YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8ZG91
YmxlPihtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAg
Y29uc3QgQ1N0cmluZyYgZ2V0U3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENTdHJpbmc+KG1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PENTdHJpbmc+KG1fdmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBOdW1iZXJU
eXBlIG51bWJlclR5cGVGcm9tRG91YmxlKGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlm
IChzdGQ6OmlzbmFuKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJUeXBlOjpOYU47
CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
TnVtYmVyVHlwZTo6SW5maW5pdHk7CisgICAgICAgIHJldHVybiBOdW1iZXJUeXBlOjpJbnRlZ2Vy
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBOdW1iZXJUeXBlIG1fbnVtYmVyVHlwZSB7IE51bWJl
clR5cGU6OkludGVnZXIgfTsKKyAgICBib29sIG1fc2lnbiB7IGZhbHNlIH07CisgICAgVmFsdWUg
bV92YWx1ZSB7IDAuMCB9OworfTsKKwogY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25G
aW5hbE9iamVjdDsKQEAgLTc2LDE2ICsxNjEsMjQgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZU51
bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRp
b25zVmFsdWUpOwogICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlKSBj
b25zdDsKLSAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KikgY29u
c3Q7CisgICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWUmJikgY29uc3Q7CiAgICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiwgZG91YmxlKSBjb25zdDsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAg
SlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0aWNhbFZh
bHVlJiYpIGNvbnN0OworI2VuZGlmCiAgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGRv
dWJsZSkgY29uc3Q7CisgICAgSlNWYWx1ZSBmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCosIElu
dGxNYXRoZW1hdGljYWxWYWx1ZSYmLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJikgY29uc3Q7Cisj
ZW5kaWYKKwogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpT
Qm91bmRGdW5jdGlvbiopOwogCiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4X3QgeyBEZWNp
bWFsLCBQZXJjZW50LCBDdXJyZW5jeSwgVW5pdCB9OwogCi0gICAgc3RhdGljIHZvaWQgZm9ybWF0
VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgU3R5bGUsIGRvdWJsZSwgY29uc3QgU3Ry
aW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiwgSlNBcnJheSosIEpTU3RyaW5nKiB1
bml0ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpT
R2xvYmFsT2JqZWN0KiwgU3R5bGUsIGJvb2wgc2lnbiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpO
dW1iZXJUeXBlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3ImLCBK
U0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEludGxUeXBlPgogICAgIGZyaWVuZCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHNEZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZh
dWx0LCBJbnRsTm90YXRpb24pOwpAQCAtOTQsNiArMTg3LDggQEAgY2xhc3MgSW50bE51bWJlckZv
cm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBJbnRs
TnVtYmVyRm9ybWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIAorICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhJ
bnRsUm91bmRpbmdUeXBlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwg
U3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtMTA1LDcgKzIw
MCwxMCBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgIGVudW0gY2xhc3MgQ3VycmVuY3lTaWduIDogdWludDhfdCB7IFN0YW5kYXJk
LCBBY2NvdW50aW5nIH07CiAgICAgZW51bSBjbGFzcyBVbml0RGlzcGxheSA6IHVpbnQ4X3QgeyBT
aG9ydCwgTmFycm93LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBDb21wYWN0RGlzcGxheSA6IHVp
bnQ4X3QgeyBTaG9ydCwgTG9uZyB9OwotICAgIGVudW0gY2xhc3MgU2lnbkRpc3BsYXkgOiB1aW50
OF90IHsgQXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybyB9OworICAgIGVudW0gY2xhc3Mg
U2lnbkRpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgTmV2ZXIsIEFsd2F5cywgRXhjZXB0WmVybywg
TmVnYXRpdmUgfTsKKyAgICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90
IHsgQXV0bywgU3RyaXBJZkludGVnZXIgfTsKKyAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDog
dWludDhfdCB7IEZhbHNlLCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKKyAgICBlbnVtIGNsYXNzIFJv
dW5kaW5nTW9kZSA6IHVpbnQ4X3QgeyBDZWlsLCBGbG9vciwgRXhwYW5kLCBUcnVuYywgSGFsZkNl
aWwsIEhhbGZGbG9vciwgSGFsZkV4cGFuZCwgSGFsZlRydW5jLCBIYWxmRXZlbiB9OwogCiAgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CiAgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKQEAgLTExMywx
NCArMjExLDE3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB1bml0RGlzcGxheVN0cmluZyhV
bml0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjb21wYWN0RGlzcGxheVN0cmlu
ZyhDb21wYWN0RGlzcGxheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzaWduRGlzcGxheVN0
cmluZyhTaWduRGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ01vZGVT
dHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRyYWlsaW5nWmVy
b0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSk7CisgICAgc3RhdGljIEpTVmFsdWUg
dXNlR3JvdXBpbmdWYWx1ZShWTSYsIFVzZUdyb3VwaW5nKTsKIAogICAgIFdyaXRlQmFycmllcjxK
U0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7CiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9S
TUFUVEVSKQotICAgIHVzaW5nIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyID0gSUNVRGVsZXRlcjx1
bnVtZl9jbG9zZT47Ci0gICAgdXNpbmcgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXIgPSBJQ1VEZWxl
dGVyPHVudW1mX2Nsb3NlUmVzdWx0PjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJl
clJhbmdlRm9ybWF0dGVyOworI2VuZGlmCiAjZWxzZQotICAgIHVzaW5nIFVOdW1iZXJGb3JtYXRE
ZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPj4gbV9udW1iZXJGb3JtYXQ7CiAjZW5k
aWYKIApAQCAtMTMzLDYgKzIzNCw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtRnJhY3Rpb25E
aWdpdHMgeyAzIH07CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgeyAwIH07CisgICAg
dW5zaWduZWQgbV9yb3VuZGluZ0luY3JlbWVudCB7IDEgfTsKICAgICBTdHlsZSBtX3N0eWxlIHsg
U3R5bGU6OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7
CiAgICAgQ3VycmVuY3lTaWduIG1fY3VycmVuY3lTaWduOwpAQCAtMTQwLDcgKzI0Miw5IEBAIGNs
YXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgQ29tcGFjdERpc3BsYXkgbV9jb21wYWN0RGlzcGxheTsKICAgICBJbnRsTm90YXRpb24gbV9u
b3RhdGlvbiB7IEludGxOb3RhdGlvbjo6U3RhbmRhcmQgfTsKICAgICBTaWduRGlzcGxheSBtX3Np
Z25EaXNwbGF5OwotICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKKyAgICBUcmFpbGlu
Z1plcm9EaXNwbGF5IG1fdHJhaWxpbmdaZXJvRGlzcGxheSB7IFRyYWlsaW5nWmVyb0Rpc3BsYXk6
OkF1dG8gfTsKKyAgICBVc2VHcm91cGluZyBtX3VzZUdyb3VwaW5nIHsgVXNlR3JvdXBpbmc6OkFs
d2F5cyB9OworICAgIFJvdW5kaW5nTW9kZSBtX3JvdW5kaW5nTW9kZSB7IFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9OwogICAgIEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRs
Um91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKaW5kZXgg
MjNkMzg2M2QxNjAwNDMxZWY3NGRmNDBjODc0NDcxNzY2ZDA1MTY5YS4uYWIyMzZmZmY2MTIwMzE2
MmYyMTE0MzA1NjNlZTVkNzVkNDBjMTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDICB7CiAKQEAgLTYxLDQ3ICs2Miw2
OSBAQCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmlt
dW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmlt
dW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZp
Y2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAg
ICAgICB1bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJl
ck9wdGlvbihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5w
cm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQg
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFs
T2JqZWN0LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAy
MSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAg
IGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMgPSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgSW50bFJvdW5kaW5nUHJpb3JpdHkgcm91bmRpbmdQcmlvcml0eSA9IGludGxPcHRpb248
SW50bFJvdW5kaW5nUHJpb3JpdHk+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+cm91bmRpbmdQcmlvcml0eSwgeyB7ICJhdXRvIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0
eTo6QXV0byB9LCB7ICJtb3JlUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9y
ZVByZWNpc2lvbiB9LCB7ICJsZXNzUHJlY2lzaW9uIl9zLCBJbnRsUm91bmRpbmdQcmlvcml0eTo6
TGVzc1ByZWNpc2lvbiB9IH0sICJyb3VuZGluZ1ByaW9yaXR5IG11c3QgYmUgZWl0aGVyIFwiYXV0
b1wiLCBcIm1vcmVQcmVjaXNpb25cIiwgb3IgXCJsZXNzUHJlY2lzaW9uXCIiX3MsIEludGxSb3Vu
ZGluZ1ByaW9yaXR5OjpBdXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogCi0gICAgaWYgKCFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgp
IHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCB1bmRlZmluZWRWYWx1ZSA9IFVJTlQzMl9NQVg7Ci0gICAgICAg
IGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlv
bkRpZ2l0czsKLSAgICAgICAgdW5zaWduZWQgc3BlY2lmaWVkTWluaW11bUZyYWN0aW9uRGlnaXRz
ID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAy
MCwgdW5kZWZpbmVkVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMg
PSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG1heGltdW1GcmFjdGlvbkRp
Z2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIw
LCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Ci0gICAgICAgIGlmIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMgIT0gdW5k
ZWZpbmVkVmFsdWUpCi0gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0ID0g
c3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgc3BlY2lmaWVkTWF4aW11bUZy
YWN0aW9uRGlnaXRzKTsKLSAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0g
aW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCAoc3BlY2lmaWVkTWluaW11bUZy
YWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJl
cihzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5p
bXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0KTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5z
aWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xv
YmFsT2JqZWN0LCAoc3BlY2lmaWVkTWF4aW11bUZyYWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZh
bHVlKSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25E
aWdpdHMpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCBz
dGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAg
ICAgaWYgKG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cykgewot
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRl
ZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGln
aXRzIl9zKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBib29sIGhhc1NkID0gIW1pbmltdW1T
aWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2Fu
dERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNGZCA9ICFtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25EaWdpdHNW
YWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFzU2QgfHwgcm91bmRpbmdQ
cmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAgICBib29sIG5lZWRGZCA9
ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB8fCByb3VuZGlu
Z1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworCisgICAgaWYgKG5lZWRT
ZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1T
aWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwg
bWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1T
aWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZp
Y2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7CisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjE7CiAg
ICAgICAgIH0KLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9
IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0czsKLSAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChub3RhdGlvbiA9PSBJbnRsTm90YXRpb246OkNvbXBhY3QpIHsKLSAg
ICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkNv
bXBhY3RSb3VuZGluZzsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChuZWVkRmQpIHsKKyAgICAg
ICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdW5kZWZpbmVk
VmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9u
RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRz
LCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0
aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywg
MCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMg
PT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRz
ID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1
bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBz
dGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdp
dHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11
bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2Vy
IHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGludGxJbnN0YW5jZS0+bV9yb3Vu
ZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czsKLSAgICBpbnRsSW5z
dGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdDsKLSAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKKyAgICBpZiAobmVlZFNkIHx8IG5lZWRGZCkgeworICAg
ICAgICBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6TW9yZVBy
ZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRs
Um91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBlbHNlIGlmIChyb3VuZGluZ1By
aW9yaXR5ID09IEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uKQorICAgICAgICAg
ICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Okxlc3NQ
cmVjaXNpb247CisgICAgICAgIGVsc2UgaWYgKGhhc1NkKQorICAgICAgICAgICAgaW50bEluc3Rh
bmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRz
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBl
ID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQ
cmVjaXNpb247CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMg
PSAwOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMDsK
KyAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7Cisg
ICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAyOworICAg
IH0KIH0KIAogY2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewpAQCAtMTI4LDQgKzE1MSw0OSBAQCBp
bmxpbmUgSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVu
Y3Rpb25zKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiB1bndyYXBGb3JMZWdhY3lJbnRsQ29u
c3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGdsb2Jh
bE9iamVjdC0+bnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoKSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbnVtYmVyZm9ybWF0L2RpZmYu
aHRtbCNzZWMtdG9pbnRsbWF0aGVtYXRpY2FsdmFsdWUKK2lubGluZSBJbnRsTWF0aGVtYXRpY2Fs
VmFsdWUgdG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGF1dG8g
bnVtYmVyID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUodmFsdWUpKQorICAgICAgICByZXR1
cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkgfTsKKworICAgIEpTVmFs
dWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlOjpQcmVmZXJOdW1iZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBhdXRvIGJpZ0ludFRvSW50bE1hdGhlbWF0aWNhbFZhbHVlID0gW10o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkgLT4gSW50bE1hdGhl
bWF0aWNhbFZhbHVlIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYg
KGF1dG8gbnVtYmVyID0gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUodmFsdWUpKQorICAgICAg
ICAgICAgcmV0dXJuIEludGxNYXRoZW1hdGljYWxWYWx1ZSB7IG51bWJlci52YWx1ZSgpIH07CisK
KyAgICAgICAgYXV0byogYmlnSW50ID0gdmFsdWUuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIGF1
dG8gc3RyaW5nID0gYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIEludGxNYXRo
ZW1hdGljYWxWYWx1ZSB7CisgICAgICAgICAgICBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJl
clR5cGU6OkludGVnZXIsCisgICAgICAgICAgICBiaWdJbnQtPnNpZ24oKSwKKyAgICAgICAgICAg
IHN0cmluZy5hc2NpaSgpLAorICAgICAgICB9OworICAgIH07CisKKyAgICBpZiAocHJpbWl0aXZl
LmlzQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50VG9J
bnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpKTsKKworICAgIGlm
ICghcHJpbWl0aXZlLmlzU3RyaW5nKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgcHJpbWl0aXZlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkgfSk7CisKKyAgICBTdHJpbmcgc3RyaW5nID0gYXNTdHJpbmcocHJpbWl0aXZlKS0+dmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgSlNWYWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCBzdHJpbmcpOworICAgIGlmIChiaWdJbnQpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCBiaWdJbnQp
KTsKKworICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBqc1RvTnVtYmVyKHN0cmlu
ZykgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4
IGRlZjAyOWIxNGRkM2I5ZWViYmFhNjQzOWM0ZTBiNGYzYTQ2YmU3MjguLmNiZWY2MDkwOTk3MmQ2
YWMyYjZlOGRmZWQ5Y2QwNDQ0NjA2ZjIwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0z
OSw2ICszOSwxMCBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdEZ1bmNG
b3JtYXQpOwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRSYW5nZSk7CisjZW5kaWYKKwogfQogCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5sdXQuaCIKQEAgLTU1LDEwICs1OSwxMCBAQCBjb25zdCBDbGFzc0luZm8gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5OdW1iZXJGb3JtYXQiLCAmQmFz
ZQogQGVuZAogKi8KIAotSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+
KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtNzIsMTEgKzc2
LDE1IEBAIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyCiB7CiB9CiAKLXZvaWQgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisjaWYgSEFWRShJQ1Vf
VV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJmb3JtYXRSYW5nZSIsIGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0UmFuZ2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyNlbmRpZgogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LW51bWJlci1mb3JtYXQtZnVuY3Rpb25zCkBAIC04NiwyNiArOTQsMTMgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgYmlnSW50T3JOdW1iZXIgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIGlmIChiaWdJbnRPck51bWJlci5pc051bWJlcigpKSB7Ci0gICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzTnVtYmVyKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAg
IH0KKyAgICBhdXRvIHZhbHVlID0gdG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCi0jaWYgVVNFKEJJR0lOVDMyKQotICAgIGlmIChiaWdJbnRPck51bWJlci5pc0Jp
Z0ludDMyKCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20oZ2xvYmFsT2JqZWN0LCBiaWdJbnRPck51bWJlci5iaWdJbnQzMkFzSW50MzIoKSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2Jh
bE9iamVjdCwgdmFsdWUpKSk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKGF1dG8gbnVtYmVyID0g
dmFsdWUudHJ5R2V0RG91YmxlKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgbnVtYmVy
LnZhbHVlKCkpKSk7CiAKLSAgICBBU1NFUlQoYmlnSW50T3JOdW1iZXIuaXNIZWFwQmlnSW50KCkp
OwotICAgIEpTQmlnSW50KiB2YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzSGVhcEJpZ0ludCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgV1RGTW92ZSh2YWx1ZSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpAQCAtMTM3LDYgKzEzMiwzOCBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwg
KEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYm91bmRGb3JtYXQp
OwogfQogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2Us
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVu
Y3Rpb25zLgorICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJl
ckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoVU5MSUtFTFko
IW51bWJlckZvcm1hdCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykp
OworCisgICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBKU1ZhbHVlIGVuZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKworICAgIGlmIChz
dGFydFZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IG9y
IGVuZCBpcyB1bmRlZmluZWQiX3MpOworCisgICAgYXV0byBzdGFydCA9IHRvSW50bE1hdGhlbWF0
aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnRWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gZW5kID0gdG9JbnRsTWF0aGVtYXRpY2FsVmFs
dWUoZ2xvYmFsT2JqZWN0LCBlbmRWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmIChhdXRvIHN0YXJ0TnVtYmVyID0gc3RhcnQudHJ5R2V0RG91Ymxl
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZW5kTnVtYmVyID0gZW5kLnRyeUdldERvdWJsZSgpKQor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVt
YmVyRm9ybWF0LT5mb3JtYXRSYW5nZShnbG9iYWxPYmplY3QsIHN0YXJ0TnVtYmVyLnZhbHVlKCks
IGVuZE51bWJlci52YWx1ZSgpKSkpOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpKSkpOworfQorI2VuZGlmCisKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRv
UGFydHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTUwLDEwICsxNzcs
MjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xvYmFsT2IKICAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZv
cm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1Bh
cnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zKSk7CiAKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1h
dGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChhdXRvIG51bWJl
ciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2Jq
ZWN0LCBudW1iZXIudmFsdWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3Qs
IFdURk1vdmUodmFsdWUpKSkpOworI2Vsc2UKICAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwor
I2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAppbmRleCA2MTc1ZjlkZDA5
Mzc5MjlmOGZlYmRhY2JjNGU4ZmNkZDQ2YmMzNzQzLi4wMzM3ZDYwZjY2Nzg0MGJjYzA0YTMyNDgz
YmNlMGE2YTQ2M2U1YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNs
YXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
LmgKaW5kZXggNmEwMGFiNzA4OWNlZjg2YjZhZjVhODRjMDE5NmU4ZjQxMjQ2MzYxYS4uNDFjMmJm
ZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0xNTEsNiArMTUxLDQ1
IEBAIFJlc3VsdFR5cGUgaW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOCiAgICAgcmV0dXJuIGZhbGxiYWNrOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgorUmVzdWx0VHlwZSBpbnRsU3RyaW5nT3JCb29s
ZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25z
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHksIFJlc3VsdFR5cGUgdHJ1ZVZhbHVlLCBSZXN1bHRUeXBl
IGZhbHN5VmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFs
LCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBSZXN1
bHRUeXBlIGZhbGxiYWNrKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRs
LW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24vZGlmZi5odG1sI3NlYy1nZXRzdHJpbmdv
cmJvb2xlYW5vcHRpb24KKworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID4gMCk7CisKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gZmFsbGJh
Y2s7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAo
IXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpICYm
IHZhbHVlLmFzQm9vbGVhbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWVWYWx1ZTsKKworICAg
ICAgICBib29sIHZhbHVlQm9vbGVhbiA9IHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICgh
dmFsdWVCb29sZWFuKQorICAgICAgICAgICAgcmV0dXJuIGZhbHN5VmFsdWU7CisKKyAgICAgICAg
U3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVudHJ5IDogdmFsdWVzKSB7CisgICAgICAgICAgICBpZiAoZW50cnkuZmlyc3Qg
PT0gc3RyaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnNlY29uZDsKKyAg
ICAgICAgfQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbm90Rm91bmRNZXNzYWdlKSk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIGZhbGxiYWNrOworfQogCiBBTFdBWVNfSU5M
SU5FIGJvb2wgY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBhcmlzb24oVUNoYXIgY2hhcmFjdGVyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAKaW5kZXggZDhiYzk2NjlmY2JhYzJlMjA5YWU0NTRkNjJiZmMzZDI4YTM1ZTQ4OS4uZTgxNDI0
YmM4YTA2OTkyZGQ4YWRjMGY2MzVmMGE5YzlmODVkNWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0zMiw4ICszMiwyNiBA
QAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5o
IgogCisjaWZkZWYgVV9ISURFX0RSQUZUX0FQSQorI3VuZGVmIFVfSElERV9EUkFGVF9BUEkKKyNl
bmRpZgorI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfRk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oPgor
I2VuZGlmCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorI2luY2x1ZGUg
PHVuaWNvZGUvdW51bWJlcnJhbmdlZm9ybWF0dGVyLmg+CisjZW5kaWYKKyNkZWZpbmUgVV9ISURF
X0RSQUZUX0FQSSAxCisKIG5hbWVzcGFjZSBKU0MgewogCit2b2lkIFVQbHVyYWxSdWxlc0RlbGV0
ZXI6Om9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcykKK3sKKyAgICBpZiAocGx1
cmFsUnVsZXMpCisgICAgICAgIHVwbHJ1bGVzX2Nsb3NlKHBsdXJhbFJ1bGVzKTsKK30KKwogY29u
c3QgQ2xhc3NJbmZvIEludGxQbHVyYWxSdWxlczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUGx1cmFs
UnVsZXMpIH07CiAKIHVzaW5nIFVFbnVtZXJhdGlvbkRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVlbnVt
X2Nsb3NlPjsKQEAgLTEwNyw4ICsxMjUsNzggQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRp
YWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAg
ICBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoZ2xvYmFsT2JqZWN0LCB0aGlzLCBvcHRpb25z
LCAwLCAzLCBJbnRsTm90YXRpb246OlN0YW5kYXJkKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogCisgICAgYXV0byBsb2NhbGUgPSBtX2xvY2FsZS51dGY4KCk7CiAg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXQg
PSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVu
dW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikK
KyAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVpbGRlcjsKKyAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKworICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ludGVnZXItd2lkdGgKKyAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCIgaW50ZWdlci13aWR0aC8iLCBXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjcgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5z
dGVhZCBvZiAqLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRlZ2Vy
RGlnaXRzOyArK2kpCisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAg
IHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZy
YWN0aW9uRGlnaXRzOiB7CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCIgLiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAn
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bUZyYWN0aW9uRGln
aXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3Jt
YXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lv
bgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0czsgKytpKQorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBtX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0czsgKytpKQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3Jl
UHJlY2lzaW9uOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAg
ICAgICAgLy8gQmVmb3JlIEludGwuTnVtYmVyRm9ybWF0IHYzLCBpdCB3YXMgQ29tcGFjdFJvdW5k
aW5nIG1vZGUsIHdoZXJlIHdlIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuCisgICAgICAgIC8v
IFNvLCBpZiBsaW5rZWQgSUNVIGlzIH42OCwgd2UgZG8gbm90aGluZy4KKyAgICAgICAgaWYgKFdU
Rjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvZDdkYjZjMWY4NjU1YmI1MzE1MzY5NWIw
OWE1MDAyOWZkMDRhODM2NAorICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMv
c2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1G
cmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21heGltdW1G
cmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7ICsraSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7Cisg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKG1fcm91bmRpbmdUeXBlID09IEludGxS
b3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb24gPyAncicgOiAncycpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRl
ci50b1N0cmluZygpOworICAgIFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAg
ICBhdXRvIHVwY29udmVydGVkID0gc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygp
OworCisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5Gb3JTa2VsZXRvbkFuZExv
Y2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBsb2NhbGUuZGF0
YSgpLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQ
bHVyYWxSdWxlcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBIQVZFKElDVV9V
X05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRl
ckRlbGV0ZXI+KHVudW1yZl9vcGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZh
bGxiYWNrKHVwY29udmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFO
R0VfQ09MTEFQU0VfTk9ORSwgVU5VTV9JREVOVElUWV9GQUxMQkFDS19SQU5HRSwgbG9jYWxlLmRh
dGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGlu
aXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisjZWxzZQorICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3Jt
YXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRy
LCAwLCBsb2NhbGUuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyNSwxMyArMjEzLDEzIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1
cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgICAgIHVu
dW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FO
VF9ESUdJVFMsIG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRB
dHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lU
UywgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50
bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
Okxlc3NQcmVjaXNpb246CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyNlbmRpZgogCi0gICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8
VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVuRm9yVHlwZSht
X2xvY2FsZS51dGY4KCkuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxf
VFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CisgICAgbV9w
bHVyYWxSdWxlcyA9IHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVsZXMsIFVQbHVyYWxSdWxlc0Rl
bGV0ZXI+KHVwbHJ1bGVzX29wZW5Gb3JUeXBlKGxvY2FsZS5kYXRhKCksIG1fdHlwZSA9PSBUeXBl
OjpPcmRpbmFsID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElOQUws
ICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJh
bFJ1bGVzIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDggKzI0NywxMiBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzKSk7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWdu
aWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246
CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11
bUZyYWN0aW9uRGlnaXRzLCBqc051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFj
dGlvbkRpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNh
bnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTE4Myw4ICsyNzUsOSBAQCBKU09iamVjdCogSW50bFBsdXJh
bFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGx1cmFs
Q2F0ZWdvcmllcyIpLCBjYXRlZ29yaWVzKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBJbnRs
TnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKG1fcm91bmRpbmdUeXBlKSkpOwog
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcHRpb25zKTsKKyAgICByZXR1cm4gb3B0
aW9uczsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlcGx1cmFs
CkBAIC0xOTksMTIgKzI5Miw1NyBAQCBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29ucwogICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAib3RoZXIiX3MpOwogCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQo
JnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CisgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdl
dCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odXBscnVsZXNfc2VsZWN0Rm9ybWF0dGVkLCBtX3BsdXJhbFJ1bGVzLmdldCgpLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0
cmluZyhidWZmZXIpKTsKKyNlbHNlCiAgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQoOCk7CiAg
ICAgYXV0byBsZW5ndGggPSB1cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0KG1fcGx1cmFsUnVsZXMu
Z2V0KCksIHZhbHVlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0
LnNpemUoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxl
Y3QgcGx1cmFsIHZhbHVlIl9zKTsKIAogICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHJl
c3VsdC5kYXRhKCksIGxlbmd0aCkpOworI2VuZGlmCit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCitKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFuZ2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBj
b25zdAoreworICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51
bWJlclJhbmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVz
dWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBy
YW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdl
KG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBv
ZiBwbHVyYWwgdmFsdWUiX3MpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19zZWxlY3RGb3JS
YW5nZSwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgcmFuZ2UuZ2V0KCksIGJ1ZmZlcik7CisgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzLmgKaW5kZXggNmQzYWNhYjg0ZTgxNGU1ZjdjMDdkMDI0ZjNlMjVmZjJlNWYwZjZlNC4u
OWI3MTg0ZTBiNGU2MTIwNmQwYjFhY2EwZmVjZmM3YzYyYjE0OGQ1NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKQEAgLTI4LDExICsyOCwx
NiBAQAogCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUv
dW51bS5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdXBsdXJhbHJ1bGVzLmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KIAorc3RydWN0IFVQbHVyYWxSdWxlczsKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXNEZWxldGVyIHsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVVBsdXJhbFJ1bGVzKik7Cit9OworCiBlbnVtIGNs
YXNzIFJlbGV2YW50RXh0ZW5zaW9uS2V5IDogdWludDhfdDsKIAogY2xhc3MgSW50bFBsdXJhbFJ1
bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewpAQCAtNjQsNiArNjksMTAgQEAg
Y2xhc3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIEpTVmFsdWUgc2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKSBjb25zdDsK
ICAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAK
KyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNWYWx1ZSBzZWxl
Y3RSYW5nZShKU0dsb2JhbE9iamVjdCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3Q7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBJbnRsUGx1cmFsUnVsZXMoVk0mLCBTdHJ1Y3R1cmUq
KTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CkBAIC03MywxMSArODIsMTYgQEAgY2xh
c3MgSW50bFBsdXJhbFJ1bGVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAg
ICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IENhcmRpbmFsLCBPcmRpbmFsIH07CiAKLSAgICB1
c2luZyBVUGx1cmFsUnVsZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1cGxydWxlc19jbG9zZT47Ci0g
ICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+Owot
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4g
bV9wbHVyYWxSdWxlczsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPiBt
X251bWJlckZvcm1hdHRlcjsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIp
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJSYW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdl
Rm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJSYW5nZUZvcm1hdHRlcjsKKyNlbmRpZgorI2Vsc2UK
KyAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVy
PiBtX251bWJlckZvcm1hdDsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIHVu
c2lnbmVkIG1fbWluaW11bUludGVnZXJEaWdpdHMgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcApp
bmRleCBjODBiZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJi
MjM5ODBjNjQ3YmE0YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAg
LTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlm
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENs
YXNzSW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFs
UnVsZXMiLCAmQmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZT4odm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3
LDExICs3MCwxNSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1By
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZF
KElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiAr
OTksMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwg
dmFsdWUpKSk7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVj
dFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMt
aW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVs
ZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShwbHVyYWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkp
OworfQorI2VuZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAz
NTkzNjI1MDg0Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAg
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCAw
YjU5NjYxMmZmOGMzNWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1Li5jMjUzODUwMGZiOGUzNDE3
Y2JmMWM2MDhhZWQ1MjFiNzU0YmU5YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMzE4LDcgKzMx
OCw3IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICBJbnRs
RmllbGRJdGVyYXRvciBmaWVsZEl0ZXJhdG9yKCppdGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxO
dW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBm
aWVsZEl0ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0
cmluZygpKSk7CisgICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5h
bChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBzdGQ6OnNp
Z25iaXQoYWJzVmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91
YmxlKGFic1ZhbHVlKSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywganNT
dHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRj
YjMzNGRmZDc4Li5iNzYzMTY3MTQxNGM5M2M1ZmQ4NDQ5M2NjNDlhM2EzNzc2MjQ4MTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2ICs0NjIsOCBA
QCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4g
aGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRy
eUV4dHJhY3REb3VibGUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQoVk0mLCBT
dHJ1Y3R1cmUqLCBEaWdpdCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2NzgsNDIg
QEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50KiBi
aWdJbnQpCiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzTnVtYmVy
KCk7CisKKyAgICBpZiAoIXZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIHZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisKKyAgICBB
U1NFUlQodmFsdWUuaXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSB2YWx1
ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgdWludDY0X3QgaW50ZWdlciA9IDA7CisgICAgaWYgY29uc3RleHByIChz
aXplb2YoRGlnaXQpID09IDgpIHsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgIT0gMSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGludGVnZXIgPSBiaWdJ
bnQtPmRpZ2l0KDApOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoRGlnaXQp
ID09IDQpOworICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdpdCgwKTsK
KyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIGludGVnZXIg
fD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KDEpKSA8PCAzMik7CisgICAg
fQorCisgICAgaWYgKGludGVnZXIgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFNhZmVJbnRl
Z2VyKCkpKQorICAgICAgICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0aWNfY2FzdDxk
b3VibGU+KGludGVnZXIpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKTsKKworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhY2M4MDRlZWJmYmJm
ZDI5ZjNjNjNjYWM0MzY2YTA2MGY2ZmNiNjIxLi5hMWEwNDVlMGNjOGQ2ODdkZGQ4NDVhN2I4OWEw
MjExNmE4YzFkOGI2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTEwLTI2ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJG
b3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1h
dC1yYW5nZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAgIChuZi5mb3JtYXRS
YW5nZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mb3JFYWNoKToKKyAgICAgICAgKG5mLmZvcm1hdFJh
bmdlVG9QYXJ0cy52YWxpZFJhbmdlcy5mb3JFYWNoKToKKyAgICAgICAgKG5mNi5mb3JtYXRSYW5n
ZS5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1h
dC1zdHJpbmctdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRv
LXBhcnRzLmpzOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1p
bmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgICog
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFJvdW5kaW5nSW5jcmVtZW50
cy5mb3JFYWNoKToKKyAgICAgICAgKGludmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6
CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12
YWx1ZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoT2JqZWN0LmtleXMuZXhwZWN0YXRpb25zLmZvckVh
Y2gpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXYz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKHZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2gpOgorICAgICAgICAoaW52YWxpZFJv
dW5kaW5nTW9kZS5mb3JFYWNoKToKKyAgICAgICAgKGxldC5vcHRpb25zLmdldCBzaWduRGlzcGxh
eSk6CisgICAgICAgIChsZXQub3B0aW9ucy5nZXQgcm91bmRpbmdNb2RlKToKKyAgICAgICAgKiBz
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxp
bmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMtdjMuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16
ZXJvLWRpc3BsYXktdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAq
IHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFVz
ZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoaW52YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gp
OgorICAgICAgICAoYWxsLmZvckVhY2gpOgorICAgICAgICAobWdkMS5mb3JFYWNoKToKKyAgICAg
ICAgKG1nZDIuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
OgorICAgICAgICAodGVzdE51bWJlckZvcm1hdCk6CisgICAgICAgIChzaG91bGRCZS50ZXN0TnVt
YmVyRm9ybWF0LkludGwuTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1wbHVy
YWxydWxlcy1zZWxlY3RyYW5nZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisKIDIw
MjEtMTAtMjMgIFBoaWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICB1
cGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtZm9ybWF0LWxhcmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9y
bWF0LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZWYwNzM5MDYwNDczZjBiNWE1OWI3OWVhZDgwOWYx
MzA5ZWZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC1mb3JtYXQtbGFyZ2UuanMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVk
KTsKK30KKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIik7Citjb25z
dCBzdGFydCA9IDk4NzY1NDMyMTk4NzY1NDMyMW47Citjb25zdCBlbmQgPSA5ODc2NTQzMjE5ODc2
NTQzMjJuOworc2hvdWxkQmUobmYuZm9ybWF0KHN0YXJ0KSwgYDk4Nyw2NTQsMzIxLDk4Nyw2NTQs
MzIxYCk7CitpZiAobmYuZm9ybWF0UmFuZ2UpCisgICAgc2hvdWxkQmUobmYuZm9ybWF0UmFuZ2Uo
c3RhcnQsIGVuZCksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2
NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1m
b3JtYXQtcmFuZ2UtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3Jt
YXQtcmFuZ2UtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIyMzdjMTcwZjE2Y2ExNmNiMjI4OTFlZWQ1YWE3
NWU2MjM4MmM0MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LWZvcm1hdC1yYW5nZS12My5qcwpAQCAtMCwwICsxLDIyMyBAQAorLy8gQ29weXJpZ2h0
IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKwor
ICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSBidXQgZ290ICR7U3RyaW5nKGVycm9y
KX0hYCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZE5vdFRocm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7
Cit9CisKK2NvbnN0IHZhbGlkUmFuZ2VzID0gW1stMTIzNDUsIC01Njc4XSwgWy0xMjM0NSwgNTY3
ODldLCBbMTIzNDUsIDU2Nzg5XV07CisKK2NvbnN0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0
KCJlbiIsIHtzaWduRGlzcGxheTogImV4Y2VwdFplcm8ifSk7CitpZiAobmYuZm9ybWF0UmFuZ2Up
IHsKKyAgICBbJ2Zvcm1hdFJhbmdlJ10uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHsKKyAgICAg
ICAgc2hvdWxkQmUoImZ1bmN0aW9uIiwgdHlwZW9mIG5mW21ldGhvZF0pOworCisgICAgICAgIC8v
IDIuIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KG5mLCBbW0luaXRpYWxpemVkTnVtYmVy
Rm9ybWF0XV0pLgorICAgICAgICAvLyBBc3NlcnQgaWYgY2FsbGVkIHdpdGhvdXQgbmYKKyAgICAg
ICAgbGV0IGYgPSBuZlttZXRob2RdOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGYoMSwg
MjMpIH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gQXNzZXJ0IG5vcm1hbCBjYWxsIHN1Y2Nl
c3MKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxLCAyMykpOworCisg
ICAgICAgIC8vIDMuIElmIHN0YXJ0IGlzIHVuZGVmaW5lZCAuLi4sIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKHVuZGVm
aW5lZCwgMjMpIH0sIFR5cGVFcnJvcik7CisgICAgICAgIC8vIDMuIElmIC4uLiBlbmQgaXMgdW5k
ZWZpbmVkLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IHsgbmZbbWV0aG9kXSgxLCB1bmRlZmluZWQpIH0sIFR5cGVFcnJvcik7CisKKyAgICAg
ICAgLy8gNC4gTGV0IHggYmUgPyBUb051bWVyaWMoc3RhcnQpLgorICAgICAgICAvLyBWZXJpZnkg
aXQgd29uJ3QgdGhyb3cgZXJyb3IKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0
aG9kXShudWxsLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2Rd
KGZhbHNlLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKHRy
dWUsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oIjEyIiwg
MjMpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgiLTEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsIDIzKSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsgbmZbbWV0aG9kXShTeW1ib2woMTIpLCAyMykgfSwgVHlwZUVycm9yKTsKKyAgICAgICAgc2hv
dWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMpKTsKKyAgICAgICAgc2hvdWxkTm90
VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMm4sIDIzKSk7CisgICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsgbmZbbWV0aG9kXSh7fSwgLTIzKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxk
Tm90VGhyb3coKCkgPT4geyBuZlttZXRob2RdKFtdLCAyMykgfSk7CisKKyAgICAgICAgLy8gNS4g
TGV0IHkgYmUgPyBUb051bWVyaWMoZW5kKS4KKyAgICAgICAgLy8gVmVyaWZ5IGl0IHdvbid0IHRo
cm93IGVycm9yCisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oLTEyLCBu
dWxsKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oLTEyLCBmYWxz
ZSkpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKC0xMiwgdHJ1ZSkp
OworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAiMjMiKSk7Cisg
ICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTIsICIyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MCIpKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRo
b2RdKDEyLCBTeW1ib2woMjMpKSB9LCBUeXBlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJv
dygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBuZlttZXRob2RdKDEyLCAyM24pKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZltt
ZXRob2RdKC0xMiwge30pIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygo
KSA9PiB7IG5mW21ldGhvZF0oLTEyLCBbXSkgfSk7CisKKyAgICAgICAgLy8gNi4gSWYgeCBpcyBO
YU4gLi4uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBzaG91bGRUaHJv
dygoKSA9PiB7IG5mW21ldGhvZF0oTmFOLCAyMykgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgiTmFOIiwgMjMpIH0sIFJhbmdlRXJyb3IpOwor
ICAgICAgICAvLyA2LiBJZiAuLi4geSBpcyBOYU4sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRp
b24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgTmFOKSB9LCBS
YW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCAi
TmFOIikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0
aG9kXSgxMiwgInh5eiIpIH0sIFJhbmdlRXJyb3IpOworCisgICAgICAgIC8vIDcuIElmIHggaXMg
YSBub24tZmluaXRlIE51bWJlciAuLi4sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisg
ICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgtMTIvMCwgMTIvMCkgfSk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMi8wLCAtMTIvMCkgfSwg
UmFuZ2VFcnJvcik7CisKKyAgICAgICAgLy8gOC4gSWYgeCBpcyBncmVhdGVyIHRoYW4geSwgdGhy
b3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgLy8gbmVpdGhlciB4IG5vciB5IGFy
ZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyMywgMTIp
IH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2Rd
KDEyLCAyMykpOworICAgICAgICAvLyB4IGlzIG5vdCBiaWdpbnQgYnV0IHkgaXMuCisgICAgICAg
IHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyMywgMTJuKSB9LCBSYW5nZUVycm9yKTsK
KyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjNuKSk7CisgICAg
ICAgIC8vIHggaXMgYmlnaW50IGJ1dCB5IGlzIG5vdC4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBuZlttZXRob2RdKDIzbiwgMTIpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEybiwgMjMpKTsKKyAgICAgICAgLy8gYm90aCB4IGFu
ZCB5IGFyZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgy
M24sIDEybikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5m
W21ldGhvZF0oMTJuLCAyM24pKTsKKworICAgICAgICB2YWxpZFJhbmdlcy5mb3JFYWNoKAorICAg
ICAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAgICAgICAgICAgICAgY29uc3QgWCA9IEJp
Z0ludCh4KTsKKyAgICAgICAgICAgICAgICBjb25zdCBZID0gQmlnSW50KHkpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X3kgPSBuZlttZXRob2RdKHgsIHkpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX3kgPSBuZlttZXRob2RdKFgsIHkpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X1kgPSBuZlttZXRob2RdKHgsIFkpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX1kgPSBuZlttZXRob2RdKFgsIFkpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1hdHRlZF9YX3kpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1hdHRlZF94X1kpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1hdHRlZF9YX1kpOworCisgICAgICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKworLy8gQ2hlY2sgdGhlIG51bWJlciBvZiBwYXJ0IHdpdGgg
dHlwZTogInBsdXNTaWduIiBhbmQgIm1pbnVzU2lnbiIgYXJlIGNvcnJlCitpZiAobmYuZm9ybWF0
UmFuZ2VUb1BhcnRzKSB7CisgICAgdmFsaWRSYW5nZXMuZm9yRWFjaCgKKyAgICAgICAgZnVuY3Rp
b24oW3gsIHldKSB7CisgICAgICAgICAgICBjb25zdCBleHBlY3RlZFBsdXMgPSAoeCA+IDApID8g
KCh5ID4gMCkgPyAyIDogMSkgOiAoKHkgPiAwKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIGNvbnN0
IGV4cGVjdGVkTWludXMgPSAoeCA8IDApID8gKCh5IDwgMCkgPyAyIDogMSkgOiAoKHkgPCAwKSA/
IDEgOiAwKTsKKyAgICAgICAgICAgIGxldCBhY3R1YWxQbHVzID0gMDsKKyAgICAgICAgICAgIGxl
dCBhY3R1YWxNaW51cyA9IDA7CisgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IG5mLmZvcm1hdFJh
bmdlVG9QYXJ0cyh4LCB5KTsKKyAgICAgICAgICAgIHBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFy
dCkgeworICAgICAgICAgICAgICAgIGlmIChwYXJ0LnR5cGUgPT0gInBsdXNTaWduIikgYWN0dWFs
UGx1cysrOworICAgICAgICAgICAgICAgIGlmIChwYXJ0LnR5cGUgPT0gIm1pbnVzU2lnbiIpIGFj
dHVhbE1pbnVzKys7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9
ICJmb3JtYXRSYW5nZVRvUGFydHMoIiArIHggKyAiLCAiICsgeSArICIpOiAiOworICAgICAgICAg
ICAgc2hvdWxkQmUoZXhwZWN0ZWRQbHVzLCBhY3R1YWxQbHVzLAorICAgICAgICAgICAgICAgIG1l
dGhvZCArICJOdW1iZXIgb2YgdHlwZTogJ3BsdXNTaWduJyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3Qi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKGV4cGVjdGVkTWludXMsIGFjdHVhbE1pbnVzLAorICAg
ICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2YgdHlwZTogJ21pbnVzU2lnbicgaW4gcGFy
dHMgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgIH0pOworfQorCisvLyBGcm9tIGh0dHBzOi8vZ2l0
aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzI2Zvcm1hdHJhbmdlLWVj
bWEtNDAyLTM5MworY29uc3QgbmYyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsK
KyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11
bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CisKKy8vIFJFQURNRS5tZCBzYWlkIGl0IGV4cGVjdCAi
4oKsM+KAkzUiCitpZiAobmYyLmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKCLigqwzIOKAkyDi
gqw1IiwgbmYyLmZvcm1hdFJhbmdlKDMsIDUpKTsKKworY29uc3QgbmYzID0gbmV3IEludGwuTnVt
YmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5j
eTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmYzLmZv
cm1hdFJhbmdlVG9QYXJ0cykgeworICAgIGNvbnN0IGFjdHVhbDMgPSBuZjMuZm9ybWF0UmFuZ2VU
b1BhcnRzKDMsIDUpOworICAgIC8qCisgICAgWworICAgICAge3R5cGU6ICJjdXJyZW5jeSIsIHZh
bHVlOiAi4oKsIiwgc291cmNlOiAic3RhcnRSYW5nZSJ9CisgICAgICB7dHlwZTogImludGVnZXIi
LCB2YWx1ZTogIjMiLCBzb3VyY2U6ICJzdGFydFJhbmdlIn0KKyAgICAgIHt0eXBlOiAibGl0ZXJh
bCIsIHZhbHVlOiAi4oCTIiwgc291cmNlOiAic2hhcmVkIn0KKyAgICAgIHt0eXBlOiAiaW50ZWdl
ciIsIHZhbHVlOiAiNSIsIHNvdXJjZTogImVuZFJhbmdlIn0KKyAgICBdCisgICAgKi8KKyAgICBz
aG91bGRCZSg1LCBhY3R1YWwzLmxlbmd0aCk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0
dWFsM1swXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1swXS52YWx1ZSk7Cisg
ICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzBdLnNvdXJjZSk7CisgICAgc2hvdWxk
QmUoImludGVnZXIiLCBhY3R1YWwzWzFdLnR5cGUpOworICAgIHNob3VsZEJlKCIzIiwgYWN0dWFs
M1sxXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzFdLnNvdXJj
ZSk7CisgICAgc2hvdWxkQmUoImxpdGVyYWwiLCBhY3R1YWwzWzJdLnR5cGUpOworICAgIHNob3Vs
ZEJlKCIg4oCTICIsIGFjdHVhbDNbMl0udmFsdWUpOworICAgIHNob3VsZEJlKCJzaGFyZWQiLCBh
Y3R1YWwzWzJdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1szXS50
eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1szXS52YWx1ZSk7CisgICAgc2hvdWxk
QmUoImVuZFJhbmdlIiwgYWN0dWFsM1szXS5zb3VyY2UpOworICAgIHNob3VsZEJlKCJpbnRlZ2Vy
IiwgYWN0dWFsM1s0XS50eXBlKTsKKyAgICBzaG91bGRCZSgiNSIsIGFjdHVhbDNbNF0udmFsdWUp
OworICAgIHNob3VsZEJlKCJlbmRSYW5nZSIsIGFjdHVhbDNbNF0uc291cmNlKTsKK30KKworY29u
c3QgbmY0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1
cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAwLAorfSk7CitpZiAobmY0LmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKCJ+4oKsMyIsIG5m
NC5mb3JtYXRSYW5nZSgyLjksIDMuMSkpOworCitjb25zdCBuZjUgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoImVuLVVTIiwgeworICAgIHN0eWxlOiAiY3VycmVuY3kiLAorICAgIGN1cnJlbmN5OiAi
RVVSIiwKKyAgICBzaWduRGlzcGxheTogImFsd2F5cyIsCit9KTsKK2lmIChuZjUuZm9ybWF0UmFu
Z2UpCisgICAgc2hvdWxkQmUoIn4r4oKsMy4wMCIsIG5mNS5mb3JtYXRSYW5nZSgyLjk5OSwgMy4w
MDEpKTsKKworY29uc3QgbmY2ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIpOworaWYgKG5m
Ni5mb3JtYXRSYW5nZSkgeworICAgIHNob3VsZEJlKCIz4oCT4oieIiwgbmY2LmZvcm1hdFJhbmdl
KDMsIDEvMCkpOworICAgIHNob3VsZFRocm93KCgpID0+IHsgbmY2LmZvcm1hdFJhbmdlKDMsIDAv
MCk7IH0sIFJhbmdlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZDkyZGMzMTAwNmUz
MWQyOTlhZTg0OTAyODMyZWFhMGM3MzU0NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKQEAgLTAsMCArMSwzOSBA
QAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25z
dCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK2NvbnN0IHN0cmluZyA9ICI5
ODc2NTQzMjE5ODc2NTQzMjEiOworY29uc3Qgc3RyaW5nMiA9ICI5ODc2NTQzMjE5ODc2NTQzMjIi
Oworc2hvdWxkQmUobmYuZm9ybWF0KHN0cmluZyksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWAp
OworaWYgKG5mLmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKHN0cmlu
Zywgc3RyaW5nMiksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2
NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1m
b3JtYXQtc3RyaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0
LXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGZjNDMxZTk4N2Y3ZDEyZGJiN2UxOWIxYzE0Mjk5MzVi
ZWYyNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtZm9ybWF0LXN0cmluZy5qcwpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQp
OworfQorCitjb25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK3Nob3Vs
ZEJlKG5mLmZvcm1hdCgiNTQuMzIxIiksIGA1NC4zMjFgKTsKK2lmIChuZi5mb3JtYXRSYW5nZSkg
eworICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKCItNTQuMzIxIiwgIis1NC4zMjEiKSwgYC01
NC4zMjEg4oCTIDU0LjMyMWApOworICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKCItNTQuMzIx
IiwgIjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiksIGAtNTQuMzIx
IOKAkyAyMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCww
MDBgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZv
cm1hdC10by1wYXJ0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1h
dC10by1wYXJ0cy5qcwppbmRleCBlZjcxZjBmMWM2YzU0MWRmYTliYzM0NDFhYTFiM2Y0MDdjZDVl
ODAzLi5jY2Y5N2VjMjQxNTZkZDJkNGQyYzlhMDVmMjQ0YmM1YmQ4NjM2NDUwIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzCkBA
IC01NywzICs1NywzNSBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiBz
aG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9
KS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpLmxlbmd0aCwgMSk7CiBzaG91bGRCZShJ
bnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXRU
b1BhcnRzKE51bWJlci5NQVhfVkFMVUUpWzBdLnZhbHVlLmxlbmd0aCwgMzA5KTsKIHNob3VsZEJl
KEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoTnVtYmVyLk1BWF9WQUxV
RSkubGVuZ3RoLCAyMDUpOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeSgKKyAgICAg
ICAgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJykuZm9ybWF0VG9QYXJ0cyg0MDAwbikKKyAgICAp
LAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVl
IjoiNCJ9LAorICAgICAgICB7InR5cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9LAorICAgICAgICB7
InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiIwMDAifQorICAgIF0pKTsKKworc2hvdWxkQmUoCisg
ICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZv
cm1hdFRvUGFydHMoLTQwMDBuKQorICAgICksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAg
ICB7InR5cGUiOiJtaW51c1NpZ24iLCJ2YWx1ZSI6Ii0ifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50
ZWdlciIsInZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9
LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiIwMDAifQorICAgIF0pKTsKKwor
c2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0
KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoIi00MDAwIikKKyAgICApLAorICAgIEpTT04uc3RyaW5n
aWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoibWludXNTaWduIiwidmFsdWUiOiItIn0sCisgICAgICAg
IHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAi
LCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0K
KyAgICBdKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1y
b3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTY2MThjZTliMGVmYTMyNWYyNjA1Zjc2ZWU1NmNkNDEyNzY4ZDk1MwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5n
LWluY3JlbWVudC1yZXNvbHZlZC1tYXRjaC12My5qcwpAQCAtMCwwICsxLDQxIEBACisvLyBDb3B5
cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAg
ICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCB2YWxpZFJvdW5k
aW5nSW5jcmVtZW50cyA9IFsKKyAgMSwgNSwgMTAsIDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAyNTAs
IDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMAorXTsKKwordmFsaWRSb3VuZGluZ0luY3JlbWVu
dHMuZm9yRWFjaChmdW5jdGlvbihyb3VuZGluZ0luY3JlbWVudCkgeworICBsZXQgbmYgPSBuZXcg
SW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1lbnR9KTsKKyAgc2hv
dWxkQmUocm91bmRpbmdJbmNyZW1lbnQsIG5mLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nSW5j
cmVtZW50KTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YmMyYTVlM2ZmZTQ4
OWZmZmYyMGU1MDI1ZTRlZjRlNmYzZDU2ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdjMuanMKQEAgLTAsMCAr
MSw1OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAg
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlm
ICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworCitsZXQgdmFsaWRSb3VuZGlu
Z0luY3JlbWVudHMgPSBbCisgIDEsIDIsIDUsIDEwLCAyMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1
MDAwCitdOworCitsZXQgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50cyA9IFsKKyAgLTEsIC01LCAw
LCAxMDAxLCAxMTAwLCA1NTAwLCAyMDAwMDAsIDUwMDAwNSwgMTAwMDAwMDAsIDEwMDAwLCA1MDAw
MCwgMTAwMDAwLCA1MDAwMDAsIDEwMDAwMDAsCisgIDUwMDAwMDAKK107CisKK3ZhbGlkUm91bmRp
bmdJbmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1lbnR9KTsKK30p
OworCitpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBJbnRsLk51bWJlckZv
cm1hdCh1bmRlZmluZWQsIHtyb3VuZGluZ0luY3JlbWVudH0pCisgIH0sIFJhbmdlRXJyb3IpOwor
fSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGlu
Zy1pbmNyZW1lbnQtdmFsdWUtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC1yb3VuZGluZy1pbmNyZW1lbnQtdmFsdWUtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBmMjY4ZDk4NmMx
NmUzZjQ5N2FmMzg0NThmZWVkODkwOWQyNjQzNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS12My5qcwpA
QCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAg
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBl
eHBlY3RlZCk7Cit9CisKK2xldCBwZW5ueSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICAi
ZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAy
LCByb3VuZGluZ0luY3JlbWVudDogMSB9KTsKK2xldCBuaWNrZWwgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDUgfSk7CitsZXQgZGltZSA9IG5ldyBJ
bnRsLk51bWJlckZvcm1hdCgKKyAgICAiZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLCByb3VuZGluZ0luY3JlbWVudDogMTAgfSk7CisKKy8v
IGh0dHBzOi8vbmVjcy5jb20va25vd2xlZGdlYmFzZS9zeXNwcmVmc19wcmNfbW9kX3JvdW5kbWV0
aC5odG0KK3Nob3VsZEJlKCIxMC4xNSIsIHBlbm55LmZvcm1hdCgxMC4xNTQpKTsKK3Nob3VsZEJl
KCIxMC4xNiIsIHBlbm55LmZvcm1hdCgxMC4xNTUpKTsKK3Nob3VsZEJlKCIxMC4xMCIsIG5pY2tl
bC5mb3JtYXQoMTAuMTI0KSk7CitzaG91bGRCZSgiMTAuMTUiLCBuaWNrZWwuZm9ybWF0KDEwLjEy
NSkpOworc2hvdWxkQmUoIjEwLjQwIiwgZGltZS5mb3JtYXQoMTAuNDQ0KSk7CisvLyBtaXN0YWtl
IGluIHRoZSBhYm92ZSBwYWdlLCB0aGUgcmVzdWx0IHNob3VsZCBiZSAxMC40MCBub3QgMTAuNTAK
K3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NSkpOworc2hvdWxkQmUoIjEwLjQw
IiwgZGltZS5mb3JtYXQoMTAuNDQ1KSk7CitzaG91bGRCZSgiMTAuNTAiLCBkaW1lLmZvcm1hdCgx
MC40NSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91
bmRpbmctbW9kZS10YWJsZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiNzM0M2VhZDFmMzk1NzI4
ODBhOGIwZTQzNjljZjk3ZmFmNzQwNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMKQEAgLTAsMCArMSw2
MSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8g
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhw
ZWN0ZWQgKyAiICIgKyBtZXNzYWdlKTsKK30KKworLy8gQ2hlY2sgdGhlIHJvdW5kaW5nIGJlaGF2
aW9yLgorLy8gQmFzZWQgb24gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9y
bWF0LXYzL291dC9udW1iZXJmb3JtYXQvZGlmZi5odG1sI3RhYmxlLWludGwtcm91bmRpbmctbW9k
ZXMKK2xldCBpbnB1dHMgPSBbLTEuNSwgMC40LCAwLjUsIDAuNiwgMS41XTsKK2xldCBleHBlY3Rh
dGlvbnMgPSB7CisgICJjZWlsIjogICAgICAgWyItMSIsICIxIiwgIjEiLCAiMSIsICIyIl0sCisg
ICJmbG9vciI6ICAgICAgWyItMiIsICIwIiwgIjAiLCAiMCIsICIxIl0sCisgICJleHBhbmQiOiAg
ICAgWyItMiIsICIxIiwgIjEiLCAiMSIsICIyIl0sCisgICJ0cnVuYyI6ICAgICAgWyItMSIsICIw
IiwgIjAiLCAiMCIsICIxIl0sCisgICJoYWxmQ2VpbCI6ICAgWyItMSIsICIwIiwgIjEiLCAiMSIs
ICIyIl0sCisgICJoYWxmRmxvb3IiOiAgWyItMiIsICIwIiwgIjAiLCAiMSIsICIxIl0sCisgICJo
YWxmRXhwYW5kIjogWyItMiIsICIwIiwgIjEiLCAiMSIsICIyIl0sCisgICJoYWxmVHJ1bmMiOiAg
WyItMSIsICIwIiwgIjAiLCAiMSIsICIxIl0sCisgICJoYWxmRXZlbiI6ICAgWyItMiIsICIwIiwg
IjAiLCAiMSIsICIyIl0sCit9OworT2JqZWN0LmtleXMoZXhwZWN0YXRpb25zKS5mb3JFYWNoKGZ1
bmN0aW9uKHJvdW5kaW5nTW9kZSkgeworICBsZXQgZXhwID0gZXhwZWN0YXRpb25zW3JvdW5kaW5n
TW9kZV07CisgIGxldCBpZHggPSAwOworICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQo
ImVuIiwge3JvdW5kaW5nTW9kZSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwfSk7CisgIHNob3Vs
ZEJlKHJvdW5kaW5nTW9kZSwgbmYucmVzb2x2ZWRPcHRpb25zKCkucm91bmRpbmdNb2RlKTsKKyAg
aW5wdXRzLmZvckVhY2goZnVuY3Rpb24oaW5wdXQpIHsKKyAgICBsZXQgbXNnID0gImlucHV0OiAi
ICsgaW5wdXQgKyAiIHdpdGggcm91bmRpbmdNb2RlOiAiICsgcm91bmRpbmdNb2RlOworICAgIGlm
ICgkdm0uaWN1VmVyc2lvbigpID49IDY5KQorICAgICAgICBzaG91bGRCZShleHBbaWR4KytdLCBu
Zi5mb3JtYXQoaW5wdXQpLCBtc2cpOworICAgIGVsc2UgaWYgKHJvdW5kaW5nTW9kZSAhPT0gImhh
bGZDZWlsIiAmJiByb3VuZGluZ01vZGUgIT09ICJoYWxmRmxvb3IiKQorICAgICAgICBzaG91bGRC
ZShleHBbaWR4KytdLCBuZi5mb3JtYXQoaW5wdXQpLCBtc2cpOworICAgIGVsc2UKKyAgICAgICAg
bmYuZm9ybWF0KGlucHV0KSAvLyBzaG91bGQgbm90IHRocm93LgorICB9KQorfSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12My5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YjY4NTY4MzhmNTM5NDUzMTVkYzM2ZTRjNTQ4MWEyZGEyY2MyN2IwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmct
bW9kZS12My5qcwpAQCAtMCwwICsxLDEwMSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitsZXQg
dmFsaWRSb3VuZGluZ01vZGUgPSBbCisgICAgImNlaWwiLAorICAgICJmbG9vciIsCisgICAgImV4
cGFuZCIsCisgICAgImhhbGZDZWlsIiwKKyAgICAiaGFsZkV4cGFuZCIsCisgICAgImhhbGZGbG9v
ciIsCisgICAgImhhbGZUcnVuYyIsCisgICAgImhhbGZFdmVuIiwKKyAgICAidHJ1bmMiLAorXTsK
KworbGV0IGludmFsaWRSb3VuZGluZ01vZGUgPSBbCisgICAgImNlaWxpbmciLAorICAgICJkb3du
IiwKKyAgICAiRG93biIsCisgICAgImZsb29yaW5nIiwKKyAgICAiaGFsZkRvd24iLAorICAgICJo
YWxmVXAiLAorICAgICJoYWxmdXAiLAorICAgICJoYWxmZXZlbiIsCisgICAgImhhbGZkb3duIiwK
KyAgICAiaGFsZi11cCIsCisgICAgImhhbGYtZXZlbiIsCisgICAgImhhbGYtZG93biIsCisgICAg
InVwIiwKKyAgICAiVXAiLAorXTsKKwordmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaChmdW5jdGlv
bihyb3VuZGluZ01vZGUpIHsKKyAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVm
aW5lZCwge3JvdW5kaW5nTW9kZX0pOworICBzaG91bGRCZShyb3VuZGluZ01vZGUsIG5mLnJlc29s
dmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSk7Cit9KTsKKworaW52YWxpZFJvdW5kaW5nTW9kZS5m
b3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nTW9kZSkgeworICBzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nTW9k
ZX0pOyB9LCBgUmFuZ2VFcnJvcjogcm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyICJjZWlsIiwg
ImZsb29yIiwgImV4cGFuZCIsICJ0cnVuYyIsICJoYWxmQ2VpbCIsICJoYWxmRmxvb3IiLCAiaGFs
ZkV4cGFuZCIsICJoYWxmVHJ1bmMiLCBvciAiaGFsZkV2ZW4iYCk7Cit9KTsKKworLy8gQ2hlY2sg
ZGVmYXVsdCBpcyAiaGFsZkV4cGFuZCIKK3Nob3VsZEJlKCJoYWxmRXhwYW5kIiwgKG5ldyBJbnRs
Lk51bWJlckZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSkpOworc2hvdWxk
QmUoImhhbGZFeHBhbmQiLCAobmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgIHVuZGVmaW5lZCwg
e3JvdW5kaW5nTW9kZTogdW5kZWZpbmVkfSkucmVzb2x2ZWRPcHRpb25zKCkucm91bmRpbmdNb2Rl
KSk7CisKKy8vIENoZWNrIHJvdW5kaW5nTW9kZSBpcyByZWFkIG9uY2UgYWZ0ZXIgcmVhZGluZyBz
aWduRGlzcGxheQorCitsZXQgcmVhZCA9IFtdOworbGV0IG9wdGlvbnMgPSB7CisgIGdldCBzaWdu
RGlzcGxheSgpIHsgcmVhZC5wdXNoKCdzaWduRGlzcGxheScpOyByZXR1cm4gdW5kZWZpbmVkOyB9
LAorICBnZXQgcm91bmRpbmdNb2RlKCkgeyByZWFkLnB1c2goJ3JvdW5kaW5nTW9kZScpOyByZXR1
cm4gdW5kZWZpbmVkOyB9LAorfTsKKworbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
b3B0aW9ucyk7CitzaG91bGRCZSgic2lnbkRpc3BsYXkscm91bmRpbmdNb2RlIiwgcmVhZC5qb2lu
KCIsIikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2ln
bi1kaXNwbGF5LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1k
aXNwbGF5LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1Y2I0YzUxNGJjM2IxMTU0MzlkYWVkMTE3YmY0MGUy
YTc2NDM4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC1zaWduLWRpc3BsYXktdjMuanMKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIw
MjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCisvLyBUZXN0IGRlZmF1bHQu
CitsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKTsKK3Nob3VsZEJlKCJhdXRvIiwgbmYu
cmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRpc3BsYXkpOworCituZiA9IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgiZW4iKTsKK3Nob3VsZEJlKCJhdXRvIiwgbmYucmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRp
c3BsYXkpOworCitjb25zdCB0ZXN0RGF0YSA9IFsKKyAgICBbImF1dG8iLCAgICAgICAgIi0xMjMi
LCAgIi0wIiwgICIwIiwgICIxMjMiXSwKKyAgICBbImFsd2F5cyIsICAgICAgIi0xMjMiLCAgIi0w
IiwgIiswIiwgIisxMjMiXSwKKyAgICBbIm5ldmVyIiwgICAgICAgIjEyMyIsICAgIjAiLCAgIjAi
LCAgIjEyMyJdLAorICAgIFsiZXhjZXB0WmVybyIsICAiLTEyMyIsICAiMCIsICAiMCIsICAiKzEy
MyJdLAorICAgIFsibmVnYXRpdmUiLCAgICAiLTEyMyIsICAiMCIsICAiMCIsICAiMTIzIl0sCitd
OworCitmb3IgKGNvbnN0IFtzaWduRGlzcGxheSwgbmVnLCBuZWdaZXJvLCB6ZXJvLCBwb3NdIG9m
IHRlc3REYXRhKSB7CisgIG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtzaWduRGlz
cGxheX0pOworICBzaG91bGRCZShzaWduRGlzcGxheSwgbmYucmVzb2x2ZWRPcHRpb25zKCkuc2ln
bkRpc3BsYXkpOworICBzaG91bGRCZShuZWcsIG5mLmZvcm1hdCgtMTIzKSk7CisgIGlmICgkdm0u
aWN1VmVyc2lvbigpID49IDY5KQorICAgICAgc2hvdWxkQmUobmVnWmVybywgbmYuZm9ybWF0KC0w
KSk7CisgIHNob3VsZEJlKHplcm8sIG5mLmZvcm1hdCgwKSk7CisgIHNob3VsZEJlKHBvcywgbmYu
Zm9ybWF0KDEyMykpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMtdjMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktcmVzb2x2
ZWQtb3B0aW9ucy12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWFlM2ZiMGRmOWUzNmJmNTkwNGEyZDczOTMx
MzljNjM1NTRmMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMtdjMuanMKQEAg
LTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhw
ZWN0ZWQpOworfQorCitsZXQgZGVmYXVsdEZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4i
LAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6
IDIgfSk7CitsZXQgYXV0b0ZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsg
bWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAg
ICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnYXV0byd9KTsKK2xldCBzdHJpcElmSW50ZWdlckZtdCA9
IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5
OiAnc3RyaXBJZkludGVnZXInfSk7CisKK3Nob3VsZEJlKCJhdXRvIiwgZGVmYXVsdEZtdC5yZXNv
bHZlZE9wdGlvbnMoKS50cmFpbGluZ1plcm9EaXNwbGF5KTsKK3Nob3VsZEJlKCJhdXRvIiwgYXV0
b0ZtdC5yZXNvbHZlZE9wdGlvbnMoKS50cmFpbGluZ1plcm9EaXNwbGF5KTsKK3Nob3VsZEJlKCJz
dHJpcElmSW50ZWdlciIsCisgICAgc3RyaXBJZkludGVnZXJGbXQucmVzb2x2ZWRPcHRpb25zKCku
dHJhaWxpbmdaZXJvRGlzcGxheSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzg4NTVhYjA3ZTdjODU3NzczZDk1MGE4ZDI5ZjA5M2Q1ZGYwNGEzMwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxh
eS12My5qcwpAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVj
dCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwg
KyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCBkZWZhdWx0Rm10ID0gbmV3IEludGwuTnVtYmVy
Rm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMiB9KTsKK2xldCBhdXRvRm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJl
biIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0
czogMiwKKyAgICAgIHRyYWlsaW5nWmVyb0Rpc3BsYXk6ICdhdXRvJ30pOworbGV0IHN0cmlwSWZJ
bnRlZ2VyRm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgIHRyYWlsaW5n
WmVyb0Rpc3BsYXk6ICdzdHJpcElmSW50ZWdlcid9KTsKKworc2hvdWxkQmUoIjMuMTQiLCBkZWZh
dWx0Rm10LmZvcm1hdCgzLjE0MTEpKTsKK3Nob3VsZEJlKCIzLjE0IiwgYXV0b0ZtdC5mb3JtYXQo
My4xNDExKSk7CitzaG91bGRCZSgiMy4xNCIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgzLjE0
MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgZGVmYXVsdEZtdC5mb3JtYXQoMy4wMDE0MTEpKTsKK3No
b3VsZEJlKCIzLjAwIiwgYXV0b0ZtdC5mb3JtYXQoMy4wMDE0MTEpKTsKK2lmICgkdm0uaWN1VmVy
c2lvbigpID49IDY5KQorICAgIHNob3VsZEJlKCIzIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0
KDMuMDAxNDExKSk7CitlbHNlCisgICAgc2hvdWxkQmUoIjMuMDAiLCBzdHJpcElmSW50ZWdlckZt
dC5mb3JtYXQoMy4wMDE0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgZGVmYXVsdEZtdC5mb3JtYXQo
Mi45OTk0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgYXV0b0ZtdC5mb3JtYXQoMi45OTk0MTEpKTsK
K2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY5KQorICAgIHNob3VsZEJlKCIzIiwgc3RyaXBJZklu
dGVnZXJGbXQuZm9ybWF0KDIuOTk5NDExKSk7CitlbHNlCisgICAgc2hvdWxkQmUoIjMuMDAiLCBz
dHJpcElmSW50ZWdlckZtdC5mb3JtYXQoMi45OTk0MTEpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtdXNlZ3JvdXBpbmctdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNkZTY0
N2E4ODk5YjZiNTE2OGJmYjVkZWZlMzU5NmJlMTNmNmMyOAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzCkBAIC0wLDAg
KzEsMTU1IEBACisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24g
PSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmco
ZXJyb3IpfWApOworfQorCitsZXQgdmFsaWRVc2VHcm91cGluZyA9IFsKKyAgICAibWluMiIsCisg
ICAgImF1dG8iLAorICAgICJhbHdheXMiLAorICAgIGZhbHNlLAorXTsKKworbGV0IGludmFsaWRV
c2VHcm91cGluZyA9IFsKKyAgICAibWluLTIiLAorICAgICJ0cnVlIiwKK107CisKK3ZhbGlkVXNl
R3JvdXBpbmcuZm9yRWFjaChmdW5jdGlvbih1c2VHcm91cGluZykgeworICBsZXQgbmYgPSBuZXcg
SW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmd9KTsKKyAgc2hvdWxkQmUo
dXNlR3JvdXBpbmcsIG5mLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKK30pOworCitp
bnZhbGlkVXNlR3JvdXBpbmcuZm9yRWFjaChmdW5jdGlvbih1c2VHcm91cGluZykgeworICBzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVm
aW5lZCwge3VzZUdyb3VwaW5nfSk7IH0sIGBSYW5nZUVycm9yOiB1c2VHcm91cGluZyBtdXN0IGJl
IGVpdGhlciB0cnVlLCBmYWxzZSwgIm1pbjIiLCAiYXV0byIsIG9yICJhbHdheXMiYCk7Cit9KTsK
KworLy8gdXNlR3JvdXBpbmc6IHVuZGVmaW5lZCBnZXQgImF1dG8iCitzaG91bGRCZSgiYXV0byIs
CisgICAgKG5ldyBJbnRsLk51bWJlckZvcm1hdCgpKS5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91
cGluZyk7CitzaG91bGRCZSgiYXV0byIsCisgICAgKG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRl
ZmluZWQsIHt1c2VHcm91cGluZzogdW5kZWZpbmVkfSkpCisgICAgICAgIC5yZXNvbHZlZE9wdGlv
bnMoKS51c2VHcm91cGluZyk7CisKKy8vIHVzZUdyb3VwaW5nOiB0cnVlIGdldCAiYWx3YXlzIgor
c2hvdWxkQmUoImFsd2F5cyIsCisgICAgKG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQs
IHt1c2VHcm91cGluZzogdHJ1ZX0pKQorICAgICAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3Jv
dXBpbmcpOworCisvLyB1c2VHcm91cGluZzogZmFsc2UgZ2V0IGZhbHNlCisvLyB1c2VHcm91cGlu
ZzogIiIgZ2V0IGZhbHNlCitzaG91bGRCZShmYWxzZSwKKyAgICAobmV3IEludGwuTnVtYmVyRm9y
bWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nOiBmYWxzZX0pKQorICAgICAgICAucmVzb2x2ZWRP
cHRpb25zKCkudXNlR3JvdXBpbmcpOworc2hvdWxkQmUoZmFsc2UsCisgICAgKG5ldyBJbnRsLk51
bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZzogIiJ9KSkKKyAgICAgICAgLnJlc29s
dmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKKworLy8gU29tZSBsb2NhbGVzIHdpdGggZGVmYXVs
dCBtaW5pbXVtR3JvdXBpbmdEaWdpdHMKK2xldCBtZ2QxID0gWyJlbiJdOworLy8gU29tZSBsb2Nh
bGVzIHdpdGggZGVmYXVsdCBtaW5pbXVtR3JvdXBpbmdEaWdpdHN7IjIifQorbGV0IG1nZDIgPSBb
ImVzIiwgInBsIiwgImx2IiwgImV0IiwgImJnIl07CitsZXQgYWxsID0gbWdkMS5jb25jYXQobWdk
Mik7CisKKy8vIENoZWNrICJhbHdheXMiCithbGwuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsK
KyAgbGV0IG9mZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzog
ZmFsc2V9KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5n
OiBmYWxzZSI7CisgIC8vIEluIHVzZUdyb3VwaW5nOiBmYWxzZSwgbm8gZ3JvdXBpbmcuCisgIHNo
b3VsZEJlKDMsIG9mZi5mb3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDQsIG9m
Zi5mb3JtYXQoMTIzNCkubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg1LCBvZmYuZm9ybWF0KDEy
MzQ1KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDYsIG9mZi5mb3JtYXQoMTIzNDU2KS5sZW5n
dGgsIG1zZyk7CisgIHNob3VsZEJlKDcsIG9mZi5mb3JtYXQoMTIzNDU2NykubGVuZ3RoLCBtc2cp
OworfSk7CisKKy8vIENoZWNrIGZhbHNlCithbGwuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsK
KyAgbGV0IGFsd2F5cyA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGlu
ZzogImFsd2F5cyJ9KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdy
b3VwaW5nOiAnYWx3YXlzJyI7CisgIHNob3VsZEJlKDMsIGFsd2F5cy5mb3JtYXQoMTIzKS5sZW5n
dGgpOworICAvLyBJbiB1c2VHcm91cGluZzogImFsd2F5cyIsIGhhcyBncm91cGluZyB3aGVuIG1v
cmUgdGhhbiAzIGRpZ2l0cy4uCisgIHNob3VsZEJlKDQgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQp
Lmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNSArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDUpLmxl
bmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNiArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDU2KS5sZW5n
dGgsIG1zZyk7CisgIHNob3VsZEJlKDcgKyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0
aCwgbXNnKTsKK30pOworCisvLyBDaGVjayAibWluMiIKK2FsbC5mb3JFYWNoKGZ1bmN0aW9uKGxv
Y2FsZSkgeworICBsZXQgYWx3YXlzID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3Vz
ZUdyb3VwaW5nOiAibWluMiJ9KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAi
IHVzZUdyb3VwaW5nOiAnbWluMiciOworICBzaG91bGRCZSgzLCBhbHdheXMuZm9ybWF0KDEyMyku
bGVuZ3RoKTsKKyAgLy8gSW4gdXNlR3JvdXBpbmc6ICJtaW4yIiwgbm8gZ3JvdXBpbmcgZm9yIDQg
ZGlnaXRzIGJ1dCBoYXMgZ3JvdXBpbmcKKyAgLy8gd2hlbiBtb3JlIHRoYW4gNCBkaWdpdHMuLgor
ICBzaG91bGRCZSg0LCBhbHdheXMuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxk
QmUoNSArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUo
NiArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgIHNob3VsZEJlKDcg
KyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworCisvLyBDaGVj
ayAiYXV0byIKK21nZDEuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgbGV0IGF1dG8gPSBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJhdXRvIn0pOworICBs
ZXQgbXNnID0gImxvY2FsZTogIiArIGxvY2FsZSArICIgdXNlR3JvdXBpbmc6ICdhdXRvJyI7Cisg
IHNob3VsZEJlKDMsIGF1dG8uZm9ybWF0KDEyMykubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg0
ICsgMSwgYXV0by5mb3JtYXQoMTIzNCkubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg1ICsgMSwg
YXV0by5mb3JtYXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNiArIDEsIGF1dG8u
Zm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwgYXV0by5mb3Jt
YXQoMTIzNDU2NykubGVuZ3RoLCBtc2cpOworfSk7CittZ2QyLmZvckVhY2goZnVuY3Rpb24obG9j
YWxlKSB7CisgIGxldCBhdXRvID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3VzZUdy
b3VwaW5nOiAiYXV0byJ9KTsKKyAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVz
ZUdyb3VwaW5nOiAnYXV0byciOworICBzaG91bGRCZSgzLCBhdXRvLmZvcm1hdCgxMjMpLmxlbmd0
aCwgbXNnKTsKKyAgLy8gSW4gdXNlR3JvdXBpbmc6ICJhdXRvIiwgc2luY2UgdGhlc2UgbG9jYWxl
cyBoYXMKKyAgLy8gbWluaW11bUdyb3VwaW5nRGlnaXRzeyIyIn0sIG5vIGdyb3VwaW5nIGZvciA0
IGRpZ2l0cyBidXQgaGFzIGdyb3VwaW5nCisgIC8vIHdoZW4gbW9yZSB0aGFuIDQgZGlnaXRzLi4K
KyAgc2hvdWxkQmUoNCwgYXV0by5mb3JtYXQoMTIzNCkubGVuZ3RoLCBtc2cpOworICBzaG91bGRC
ZSg1ICsgMSwgYXV0by5mb3JtYXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgc2hvdWxkQmUoNiAr
IDEsIGF1dG8uZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICBzaG91bGRCZSg3ICsgMiwg
YXV0by5mb3JtYXQoMTIzNDU2NykubGVuZ3RoLCBtc2cpOworfSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LmpzCmluZGV4IDg1MzljOTNiNWFjYWQ2NmYwYWViY2JmZDU1OGE1ZTUzMTAyNjRi
YzUuLjNjMzAxZjU3OGE1ZGI5MzE3NDExNjIxOTAwZmQ0ZDcxYTVhNjU1ZDUgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC01Myw5ICs1MywxMyBAQCBmdW5jdGlvbiB0ZXN0TnVt
YmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogICAgICAgICAg
ICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLAogICAgICAgICAgICAgbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdp
dHM6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLAorICAgICAgICAg
ICAgdXNlR3JvdXBpbmc6ICJhdXRvIiwKICAgICAgICAgICAgIG5vdGF0aW9uOiAic3RhbmRhcmQi
LAotICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRvIgorICAgICAgICAgICAgc2lnbkRpc3Bs
YXk6ICJhdXRvIiwKKyAgICAgICAgICAgIHJvdW5kaW5nTW9kZTogImhhbGZFeHBhbmQiLAorICAg
ICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQ6IDEsCisgICAgICAgICAgICB0cmFpbGluZ1plcm9E
aXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGluZ1ByaW9yaXR5OiAiYXV0byIsCiAg
ICAgICAgIH07CiAgICAgICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIGRpZmZlcmVu
Y2UpOwogICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdE9wdGlvbnMpOwpAQCAt
MTg0LDkgKzE4OCw5IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBw
b3NzaWJsZURpZmZlcmVuY2VzKSB7CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1h
dCgnZW4nLCB7bWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyMn0pLCBSYW5nZUVycm9yKTsKIAog
Ly8gVGhlIG9wdGlvbiB1c2VHcm91cGluZyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxk
QmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7dXNlR3JvdXBpbmc6
IHRydWV9KSwgW3tsb2NhbGU6ICdlbicsIHVzZUdyb3VwaW5nOiB0cnVlfV0pLCB0cnVlKTsKK3No
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3Vw
aW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogImFsd2F5cyJ9XSksIHRy
dWUpOwogc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7
dXNlR3JvdXBpbmc6IGZhbHNlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogZmFsc2V9
XSksIHRydWUpOwotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgn
ZW4nLCB7dXNlR3JvdXBpbmc6ICdmYWxzZSd9KSwgW3tsb2NhbGU6ICdlbicsIHVzZUdyb3VwaW5n
OiB0cnVlfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnbWluMid9KSwgW3tsb2NhbGU6ICdlbicsIHVzZUdy
b3VwaW5nOiAibWluMiJ9XSksIHRydWUpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywgeyBnZXQgdXNlR3JvdXBpbmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0p
LCBFcnJvcik7CiAKIC8vIDExLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQg
Q29uc3RydWN0b3IKQEAgLTQzNSw3ICs0MzksNyBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0
KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogewogICAgIGxldCBvcHRpb25z
ID0gZGVmYXVsdE5Gb3JtYXQucmVzb2x2ZWRPcHRpb25zKCk7CiAgICAgZGVsZXRlIG9wdGlvbnMu
bG9jYWxlOyAKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgJ3sibnVtYmVy
aW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRz
IjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6Mywi
dXNlR3JvdXBpbmciOnRydWUsIm5vdGF0aW9uIjoic3RhbmRhcmQiLCJzaWduRGlzcGxheSI6ImF1
dG8ifScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBgeyJudW1iZXJp
bmdTeXN0ZW0iOiJsYXRuIiwic3R5bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVnZXJEaWdpdHMi
OjEsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGlnaXRzIjozLCJ1
c2VHcm91cGluZyI6ImF1dG8iLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJh
dXRvIiwicm91bmRpbmdNb2RlIjoiaGFsZkV4cGFuZCIsInJvdW5kaW5nSW5jcmVtZW50IjoxLCJ0
cmFpbGluZ1plcm9EaXNwbGF5IjoiYXV0byIsInJvdW5kaW5nUHJpb3JpdHkiOiJhdXRvIn1gKTsK
IH0KIAogLy8gTGVnYWN5IGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMtc2VsZWN0cmFuZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNj
ZmRlNzhlYWIxMjUzMjdkZDBkMzI5NmJkMjZlYjdhZDFkZmVjY2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzCkBAIC0wLDAg
KzEsMzYgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
Ky8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2lmIChJbnRs
LlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSkgeworICAgIGNvbnN0IHBsID0gbmV3
IEludGwuUGx1cmFsUnVsZXMoInNsIik7CisgICAgc2hvdWxkQmUoImZldyIsIHBsLnNlbGVjdFJh
bmdlKDEwMiwgMjAxKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442540</attachid>
            <date>2021-10-26 15:47:50 -0700</date>
            <delta_ts>2021-10-26 17:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026154749.patch</filename>
            <type>text/plain</type>
            <size>151539</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODlhZGI4ZTIzNzU1YzcxNjQwZjE1YzlhOWViMmRlYTY5NWNmMzFkLi5iNjU1MjBmZjA2Y2E4YTZk
MmUxYmE1YzVjM2ViMWZkMDUxODE5MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgcGFydCBvZiBJbnRsLk51bWJlckZvcm1hdCB2MyBwcm9wb3NhbFsxXS4KKyAgICAgICAg
SXQgYWRkcyAoMSkgc2V2ZXJhbCBuZXcgb3B0aW9ucyB0byBJbnRsLk51bWJlckZvcm1hdCwgKDIp
IGFkZHMKKyAgICAgICAgZm9ybWF0UmFuZ2UgYW5kIGZvcm1hdFJhbmdlVG9QYXJ0cyB0byBJbnRs
Lk51bWJlckZvcm1hdCBhbmQgSW50bC5QbHVyYWxSdWxlcywKKyAgICAgICAgYW5kICgzKSBhZGRz
IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlIHN1cHBvcnQsIHdoaWNoIGFsbG93cyBzb21lIG9mIElu
dGwuTnVtYmVyRm9ybWF0CisgICAgICAgIGZ1bmN0aW9ucyB0byB0YWtlICJzdHJpbmciIGRlY2lt
YWwgZm9ybS4KKworICAgICAgICBXZSBjYW5ub3QgaW1wbGVtZW50IHNvbWUgZmVhdHVyZXMgYmVj
YXVzZSBpdCByZXF1aXJlcyBzdXBlciBuZXcgSUNVLgorCisgICAgICAgICAgICAtIHRyYWlsaW5n
WmVyb0Rpc3BsYXkgKHJlcXVpcmVzIElDVSA2OCkKKyAgICAgICAgICAgIC0gaGFsZkNlaWwgLyBo
YWxmRmxvb3IgKHJlcXVpcmVzIElDVSA2OCkKKyAgICAgICAgICAgIC0gc2lnbkRpc3BsYXk6ICJu
ZWdhdGl2ZSIgKHJlcXVpcmVzIElDVSA2OCkKKyAgICAgICAgICAgIC0gZm9ybWF0UmFuZ2VUb1Bh
cnRzIChyZXF1aXJlcyBJQ1UgNjkpCisKKyAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20v
dGMzOS9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12MworCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAg
IChKU0M6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpT
Qzo6VU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpJbnRsTWF0aGVtYXRpY2FsVmFsdWUpOgorICAgICAgICAoSlND
OjpJbnRsTWF0aGVtYXRpY2FsVmFsdWU6OmVuc3VyZU5vbkRvdWJsZSk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxN
YXRoZW1hdGljYWxWYWx1ZTo6dHJ5R2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpnZXRTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnNldE51bWJlckZv
cm1hdERpZ2l0T3B0aW9ucyk6CisgICAgICAgIChKU0M6OmFwcGVuZE51bWJlckZvcm1hdERpZ2l0
T3B0aW9uc1RvU2tlbGV0b24pOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFs
UnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
Ojppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
c2VsZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5n
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50
Ojp0cnlFeHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yNiAgWGFuIEzDs3BleiAgPHhhbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIEltcHJvdmUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0
aW9ucyBmb3IgTGludXgvRUxGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVjNTZj
MTBlYWEwZTRmMDZhMmUzMGUzYWFiNjQ2YTBmMGRiYjY4YzguLjY4NTM0NzQ2ZDBhODgzZWRkNGI0
NTBkNThlZTg1ODVhZTdkMzg4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
ODQ1LDYgKzE4NDUsNyBAQAogCQlFMzA3MTc4QzI0Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2Fs
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCAqLzsg
fTsKIAkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkMy
NDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzA3
MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExvY2FsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIElu
dGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcyNzI1NTk0MTAwNTNCNjAxIC8qIEludGxQbHVy
YWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCAqLzsgfTsK
IAkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMEU4QTRF
MjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1MDI2REUyRTQ4MDBE
QTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICovOyB9OwogCQlFMzBFOEE1NzI2REUyRTQ4MDBE
QTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1MTI2REUyRTQ4MDBEQTQ5MTUgLyog
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggKi87IH07CkBAIC0xOTE2LDYgKzE5MTcsNyBA
QAogCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8q
IEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc0MTY2RTI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc0MTY2RDI2
OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CiAJCUUz
NzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJF
ODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovOyB9OworCQlFMzc4
REM4RDI3Mjc2Mjk0MDA0MjdCMEIgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4
MzUwMEEyMzkwRDkzQjAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBX
YXNtR2xvYmFsLmggKi87IH07CiAJCUUzODUwQjE1MjI2RUQ2NDEwMDlBQkY5QyAvKiBERkdNaW5p
ZmllZElESW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmgg
Ki87IH07CkBAIC0xMTgzMiw2ICsxMTgzNCw4IEBACiAJCQkJNUM0MTk2NjIyMjcwRTAwMDAwNDdC
N0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNjY0NDFFMjU0NDA5QjMwMDAxODc2RiAvKiBJ
bnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc4REM4RDI3Mjc2Mjk0MDA0
MjdCMEIgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEzRUU4NTQzMjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBkZDhjYjYyNzI0MWJlODhjZWVmMDc0NTljODVlZjNjOGE5ZjhjODM3Li44NjRhZDNhZDcz
MGZiZjQ0NzFhM2MzMmQ3MjZjYTkzOWFkZTBiYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC04MzUsMTEgKzgzNSwxMSBAQCBydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBl
LmNwcAogcnVudGltZS9JbnRsTG9jYWxlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCi1ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCitydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIEBuby11bmlmeSAvLyBD
b25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3QgaW4gdGhpcyBmaWxlLgogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxPYmplY3QuY3BwCi1ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5jcHAKK3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBAbm8tdW5pZnkgLy8gQ29uZmlu
ZSBVX0hJREVfRFJBRlRfQVBJJ3MgZWZmZWN0IHRvIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCmluZGV4IDlkYzBmZTJi
NjA0N2ZiMmU5ODU5MDVmMmRlNjMxM2MyN2QyZDA4ODQuLjk3YjIzZTVlYmU1MjliZTY0OTcxYTcz
Y2M3ZTVjNjU2OGJmNGI4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQmln
SW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgotI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2FzdC5oIgpAQCAtMTMyLDEzICsxMzIsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlzQmlnSW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0JpZ0lu
dCogdGhpc1ZhbHVlID0gdG9UaGlzQmlnSW50VmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgYXV0byogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKICAgICBudW1iZXJGb3JtYXQtPmlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHZhbHVlID0g
dG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2
YWx1ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCBudW1iZXIu
dmFsdWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgV1RGTW92ZSh2YWx1ZSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5NTc2ZGRhZi4uNGNlZDUyNTcwY2Q5
NWU0NjU0MGJkYzA4NTY3ZTgwYjliN2M5MTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMTcsMTAgKzIxNywxMiBAQAog
ICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyb3VuZGluZ0luY3JlbWVudCkgXAogICAg
IG1hY3JvKHJvdW5kaW5nTW9kZSkgXAorICAgIG1hY3JvKHJvdW5kaW5nUHJpb3JpdHkpIFwKICAg
ICBtYWNybyhzY3JpcHQpIFwKICAgICBtYWNybyhzZWNvbmQpIFwKICAgICBtYWNybyhzZWNvbmRz
KSBcCiAgICAgbWFjcm8oc2VnbWVudCkgXAorICAgIG1hY3JvKHNlbGVjdFJhbmdlKSBcCiAgICAg
bWFjcm8oc2Vuc2l0aXZpdHkpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBc
CkBAIC0yNDksNiArMjUxLDcgQEAKICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAogICAgIG1h
Y3JvKHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNybyh0cmFp
bGluZ1plcm9EaXNwbGF5KSBcCiAgICAgbWFjcm8odHlwZSkgXAogICAgIG1hY3JvKHVpZCkgXAog
ICAgIG1hY3JvKHVuaWNvZGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggZmMzMjM3MDMyMDIyYjRjNmQ2N2RkODE1NTll
YzMzNWI1NmJkMGRmZi4uNThhODlkYzRmMWQwOWVkZGM0MGY1NWI2MTY5YzFiMjNjMTIxMzIyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKQEAgLTM1LDggKzM1LDIwIEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSA8d3RmL1JhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBl
cnMuaD4KIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjZW5kaWYKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5p
Y29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9S
QU5HRV9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIu
aD4KKyNlbmRpZgorI2RlZmluZSBVX0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxOdW1iZXJGb3JtYXQpIH07CkBAIC00NSw2ICs1NywyMiBAQCBuYW1lc3BhY2UgSW50bE51bWJl
ckZvcm1hdEludGVybmFsIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCit2b2lkIFVOdW1iZXJGb3Jt
YXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sK
KyAgICBpZiAoZm9ybWF0dGVyKQorICAgICAgICB1bnVtZl9jbG9zZShmb3JtYXR0ZXIpOworfQor
I2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCit2b2lkIFVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0
dGVyKiBmb3JtYXR0ZXIpCit7CisgICAgaWYgKGZvcm1hdHRlcikKKyAgICAgICAgdW51bXJmX2Ns
b3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKwogc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVs
ZCB7CiAgICAgaW50MzJfdCB0eXBlOwogICAgIHNpemVfdCBzaXplOwpAQCAtMjE0LDYgKzI0Miw1
NiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZQogICAgIHJldHVybiBXZWxsRm9ybWVkVW5pdChu
dW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1ZSgpKTsKIH0KIAorc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxk
LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAg
Y2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6TmFOOgorICAgICAgICAg
ICAgcmV0dXJuICJuYW4iX3M7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpO
dW1iZXJUeXBlOjpJbmZpbml0eToKKyAgICAgICAgICAgIHJldHVybiAiaW5maW5pdHkiX3M7Cisg
ICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpJbnRlZ2VyOgor
ICAgICAgICAgICAgcmV0dXJuICJpbnRlZ2VyIl9zOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gInVua25vd24iX3M7CisgICAgY2FzZSBV
TlVNX0ZSQUNUSU9OX0ZJRUxEOgorICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOworICAgIGNh
c2UgVU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJkZWNpbWFs
Il9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6CisgICAgICAgIHJldHVy
biAiZXhwb25lbnRTZXBhcmF0b3IiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklF
TEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7CisgICAgY2FzZSBVTlVN
X0VYUE9ORU5UX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKKyAg
ICBjYXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgorICAgICAgICByZXR1cm4gImdy
b3VwIl9zOworICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJj
dXJyZW5jeSJfczsKKyAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKKyAgICAgICAgLy8gSWYg
dGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgorICAgICAgICAv
LyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCisgICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50
bE51bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7
CisgICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6CisgICAgICAgIHJldHVybiBzaWduID8gIm1pbnVz
U2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIp
CisgICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0
Il9zOworICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBh
Y3QiX3M7CisjZW5kaWYKKyAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0
aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgor
ICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24g
cGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgorICAgIGNhc2UgVU5VTV9Q
RVJNSUxMX0ZJRUxEOgorICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJG
b3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFuICJ1bmtub3duIiBw
YXJ0LgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAidW5rbm93biJfczsKKyAgICB9Cisg
ICAgcmV0dXJuICJ1bmtub3duIl9zOworfQorCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKQEAgLTMwOSwxNCArMzg3LDUz
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRp
b25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbV9ub3RhdGlvbik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIG1fcm91bmRpbmdJbmNyZW1l
bnQgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIDEsIDUwMDAsIDEpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCByb3VuZGluZ0luY3JlbWVudENhbmRpZGF0ZXNbXSA9IHsKKyAgICAgICAgMSwgMiwgNSwgMTAs
IDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAyNTAsIDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMAor
ICAgIH07CisgICAgYm9vbCBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSB0cnVlOworICAgIGZv
ciAodW5zaWduZWQgY2FuZGlkYXRlIDogcm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzKSB7Cisg
ICAgICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ID09IGNhbmRpZGF0ZSkgeworICAgICAgICAg
ICAgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50KSB7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmdJbmNy
ZW1lbnQgbXVzdCBiZSBvbmUgb2YgMSwgMiwgNSwgMTAsIDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAy
NTAsIDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMCJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSAmJiBtX3JvdW5kaW5nVHlwZSAh
PSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cykgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nIHR5cGUgaXMgbm90IGZyYWN0aW9u
LWRpZ2l0cyB3aGlsZSByb3VuZGluZ0luY3JlbWVudCBpcyBzcGVjaWZpZWQiX3MpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFpbGluZ1plcm9EaXNwbGF5ID0gaW50bE9wdGlv
bjxUcmFpbGluZ1plcm9EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIHsgeyAiYXV0byJfcywgVHJhaWxpbmdaZXJvRGlz
cGxheTo6QXV0byB9LCB7ICJzdHJpcElmSW50ZWdlciJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6
U3RyaXBJZkludGVnZXIgfSB9LCAidHJhaWxpbmdaZXJvRGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
ImF1dG9cIiBvciBcInN0cmlwSWZJbnRlZ2VyXCIiX3MsIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1
dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKICAgICBtX2Nv
bXBhY3REaXNwbGF5ID0gaW50bE9wdGlvbjxDb21wYWN0RGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyB7
ICJzaG9ydCJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0IH0sIHsgImxvbmciX3MsIENvbXBhY3RE
aXNwbGF5OjpMb25nIH0gfSwgImNvbXBhY3REaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRc
IiBvciBcImxvbmdcIiJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBp
bnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKKyAgICBVc2VHcm91cGluZyBkZWZhdWx0VXNlR3Jv
dXBpbmcgPSBVc2VHcm91cGluZzo6QXV0bzsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpCisgICAgICAgIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5n
OjpNaW4yOworCisgICAgbV91c2VHcm91cGluZyA9IGludGxTdHJpbmdPckJvb2xlYW5PcHRpb248
VXNlR3JvdXBpbmc+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVzZUdyb3VwaW5nIiksIFVzZUdyb3VwaW5nOjpBbHdheXMsIFVzZUdyb3VwaW5nOjpG
YWxzZSwgeyB7ICJtaW4yIl9zLCBVc2VHcm91cGluZzo6TWluMiB9LCB7ICJhdXRvIl9zLCBVc2VH
cm91cGluZzo6QXV0byB9LCB7ICJhbHdheXMiX3MsIFVzZUdyb3VwaW5nOjpBbHdheXMgfSB9LCAi
dXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsIFwibWluMlwiLCBcImF1dG9c
Iiwgb3IgXCJhbHdheXNcIiJfcywgZGVmYXVsdFVzZUdyb3VwaW5nKTsKKworICAgIG1fc2lnbkRp
c3BsYXkgPSBpbnRsT3B0aW9uPFNpZ25EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCB7IHsgImF1dG8iX3MsIFNp
Z25EaXNwbGF5OjpBdXRvIH0sIHsgIm5ldmVyIl9zLCBTaWduRGlzcGxheTo6TmV2ZXIgfSwgeyAi
YWx3YXlzIl9zLCBTaWduRGlzcGxheTo6QWx3YXlzIH0sIHsgImV4Y2VwdFplcm8iX3MsIFNpZ25E
aXNwbGF5OjpFeGNlcHRaZXJvIH0sIHsgIm5lZ2F0aXZlIl9zLCBTaWduRGlzcGxheTo6TmVnYXRp
dmUgfSB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwg
XCJhbHdheXNcIiwgXCJleGNlcHRaZXJvXCIsIG9yIFwibmVnYXRpdmVcIiJfcywgU2lnbkRpc3Bs
YXk6OkF1dG8pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAg
bV91c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAotICAgIG1f
c2lnbkRpc3BsYXkgPSBpbnRsT3B0aW9uPFNpZ25EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCB7IHsgImF1dG8i
X3MsIFNpZ25EaXNwbGF5OjpBdXRvIH0sIHsgIm5ldmVyIl9zLCBTaWduRGlzcGxheTo6TmV2ZXIg
fSwgeyAiYWx3YXlzIl9zLCBTaWduRGlzcGxheTo6QWx3YXlzIH0sIHsgImV4Y2VwdFplcm8iX3Ms
IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVy
IFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIl9zLCBT
aWduRGlzcGxheTo6QXV0byk7CisgICAgbV9yb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5k
aW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGlu
Z01vZGUsIHsKKyAgICAgICAgICAgIHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LAor
ICAgICAgICAgICAgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwKKyAgICAgICAg
ICAgIHsgImV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpFeHBhbmQgfSwKKyAgICAgICAgICAgIHsg
InRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sCisgICAgICAgICAgICB7ICJoYWxmQ2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbCB9LAorICAgICAgICAgICAgeyAiaGFsZkZsb29y
Il9zLCBSb3VuZGluZ01vZGU6OkhhbGZGbG9vciB9LAorICAgICAgICAgICAgeyAiaGFsZkV4cGFu
ZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0sCisgICAgICAgICAgICB7ICJoYWxmVHJ1
bmMiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jIH0sCisgICAgICAgICAgICB7ICJoYWxmRXZl
biJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXZlbiB9CisgICAgICAgIH0sICJyb3VuZGluZ01vZGUg
bXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJleHBhbmRcIiwgXCJ0cnVuY1wi
LCBcImhhbGZDZWlsXCIsIFwiaGFsZkZsb29yXCIsIFwiaGFsZkV4cGFuZFwiLCBcImhhbGZUcnVu
Y1wiLCBvciBcImhhbGZFdmVuXCIiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIENTdHJpbmcgZGF0YUxv
Y2FsZVdpdGhFeHRlbnNpb25zID0gbWFrZVN0cmluZyhyZXNvbHZlZC5kYXRhTG9jYWxlLCAiLXUt
bnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pLnV0ZjgoKTsKQEAgLTMyOSw3ICs0NDYsNDggQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3Nr
ZWxldG9ucy5tZAogCiAgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7Ci0gICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICBzd2l0
Y2ggKG1fcm91bmRpbmdNb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtY2VpbGluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtZmxvb3IiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS11cCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJv
dW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5k
aW5nLW1vZGUtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
SGFsZkNlaWw6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsaW5n
LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0Lgor
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRm
ZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklD
VTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtY2VpbGluZyIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsgLy8g
RGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJvdW5kaW5n
TW9kZTo6SGFsZkZsb29yOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYt
Y2VpbC4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBp
dC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQv
ZThkZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAoV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWZsb29yIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAv
LyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3Vu
ZGluZy1tb2RlLWhhbGYtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1oYWxmLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkhhbGZFdmVuOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2Rl
LWhhbGYtZXZlbiIpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBzd2l0Y2ggKG1fc3R5
bGUpIHsKICAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgpAQCAtMzg2LDMyICs1NDQsMTggQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB9CiAgICAgfQogCi0gICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13aWR0aAotICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+
PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBp
bnN0ZWFkIG9mICouCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVn
ZXJEaWdpdHM7ICsraSkKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAg
IGFwcGVuZE51bWJlckZvcm1hdERpZ2l0T3B0aW9uc1RvU2tlbGV0b24odGhpcywgc2tlbGV0b25C
dWlsZGVyKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKLSAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgotICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAvLyBDb25maWd1cmUgdGhp
cyBqdXN0IGFmdGVyIHByZWNpc2lvbi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9z
a2VsZXRvbnMubWQjdHJhaWxpbmctemVyby1kaXNwbGF5CisgICAgc3dpdGNoIChtX3RyYWlsaW5n
WmVyb0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CiAgICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50
RGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KLSAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgnICcpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJ0AnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKLSAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgotICAgICAgICAvLyBE
byBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJ
ZkludGVnZXI6CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIHRyYWlsaW5nIHplcm8g
ZGlzcGxheS4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9y
dCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21t
aXQvYjc5YzI5OWY5MGQ0MDIzYWMyMzdkYjNkMDMzNWQ1NjhiZjIxY2QzNgorICAgICAgICBpZiAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiL3ciKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00NjIsMjAgKzYw
Niw1NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1leGNlcHQtemVybyIpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAgLy8gT25seSBJ
Q1U2OX4gc3VwcG9ydHMgbmVnYXRpdmUgc2lnbiBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24g
aWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC8xYWEwZGFkOGUwNmVjYzk5YmZmNDQyZGQz
N2Y2ZGFhMmQzOWQ5YTVhCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjkpIHsKKyAgICAgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFjY291bnRpbmctbmVnYXRpdmUiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2ln
bi1uZWdhdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlm
ICghbV91c2VHcm91cGluZykKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3Nh
bC1pbnRsLW51bWJlcmZvcm1hdC12My9pc3N1ZXMvMworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9u
dW1iZXJzL3NrZWxldG9ucy5tZCNncm91cGluZworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykg
eworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIgZ3JvdXAtb2ZmIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBp
bmc6Ok1pbjI6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1taW4yIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1hdXRvIik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIGdyb3VwLW9uLWFsaWduZWQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgU3Ry
aW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgZGF0YUxvZ0xu
SWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBza2VsZXRvbik7CiAgICAgU3Ry
aW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0ZWQgPSBz
a2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX251bWJlckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4odW51bWZfb3Bl
bkZvclNrZWxldG9uQW5kTG9jYWxlKHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KS5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMu
ZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9w
dHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5G
b3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVS
KQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJh
bmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZv
clNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQo
KSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1f
SURFTlRJVFlfRkFMTEJBQ0tfQVBQUk9YSU1BVEVMWSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25z
LmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgogI2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7
CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CkBAIC01MjksMTIgKzcwNywxMyBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2UgU2ln
bkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAg
IGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNl
IHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1i
ZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERl
bGV0ZXI+KHVudW1fb3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIG1fbnVtYmVyRm9ybWF0ID0gc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+KHVudW1f
b3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwg
bnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU5LDExICs3MzgsMjcg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lv
bjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TGVzc1ByZWNpc2lvbjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBt
X3VzZUdyb3VwaW5nKTsKKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykgeworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ug
c2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdy
b3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJ
TkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC01NzgsNyArNzczLDcg
QEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24KICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3Bl
blJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVu
dW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVy
Rm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsK
QEAgLTU5MywyOSArNzg4LDI2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICNlbmRpZgotICAg
IHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgotSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25zdAor
SlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGF1dG8gc3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKGdsb2JhbE9iamVj
dCwgMTApOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBBU1NF
UlQoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpOwotICAgIGF1dG8qIHJh
d1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0ZXJz
OCgpKTsKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsK
ICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9y
bWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRv
IGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9y
bWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7Ci0g
ICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5n
LCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAg
dW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEo
KSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAgICAg
c3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5n
LCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CkBAIC02MjMsMTMgKzgxNSw4OSBAQCBK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwogI2Vsc2UK
ICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0
KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOworICAgIGF1
dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1h
bCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHN0cmluZy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
YnVmZmVyKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIp
KSk7Cit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgaWYgKHN0ZDo6
aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKKyAgICAgICAgcmV0dXJuIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJlIG91dCBvZiBy
YW5nZSJfcyk7CisKKyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJf
cyk7CisKKyAgICBpZiAoc3RkOjpzaWduYml0KGVuZCkgJiYgIWVuZCAmJiBzdGFydCA+PSAwKQor
ICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFy
dCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEg
cmFuZ2UiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIGF1
dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0aCkpOwogfQogCitKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHN0YXJ0LCBJbnRsTWF0aGVtYXRpY2FsVmFs
dWUmJiBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFTU0VSVChtX251
bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkgPT0gSW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5cGUoKSA9
PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKKyAgICAgICAgcmV0dXJu
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJl
IG91dCBvZiByYW5nZSJfcyk7CisKKyAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBj
b25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOworCisgICAgZW5kLmVu
c3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0cmluZyA9IGVuZC5nZXRTdHJp
bmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8g
cmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxldGVy
PHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIHVu
dW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3Rh
cnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5nLmRhdGEoKSwg
ZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICBhdXRvKiBmb3Jt
YXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVzKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKwor
ICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gdWZtdHZh
bF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0dXMpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKK30KKyNlbmRpZgorCiBBU0NJ
SUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiB7CiAg
ICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzI3LDExICs5OTUsODEgQEAgQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5
KQogICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNl
cHRaZXJvOgogICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8iX3M7CisgICAgY2FzZSBTaWduRGlz
cGxheTo6TmVnYXRpdmU6CisgICAgICAgIHJldHVybiAibmVnYXRpdmUiX3M7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
K30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhS
b3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAgICAgIHJldHVybiAiY2VpbCJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHJldHVybiAiZmxvb3IiX3M7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgcmV0dXJuICJleHBhbmQi
X3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICByZXR1cm4gInRydW5j
Il9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDoKKyAgICAgICAgcmV0dXJuICJo
YWxmQ2VpbCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yOgorICAgICAgICBy
ZXR1cm4gImhhbGZGbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoK
KyAgICAgICAgcmV0dXJuICJoYWxmRXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpI
YWxmVHJ1bmM6CisgICAgICAgIHJldHVybiAiaGFsZlRydW5jIl9zOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxh
eVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCit7CisgICAg
c3dpdGNoICh0cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBUcmFpbGluZ1pl
cm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdl
ciJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91
bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBlIHJvdW5kaW5nVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHJvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0
czoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJtb3JlUHJlY2lzaW9uIl9zOworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJsZXNz
UHJlY2lzaW9uIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdyb3VwaW5nKQoreworICAg
IHN3aXRjaCAodXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKKyAg
ICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWlu
MjoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIiX3MpOworICAg
IGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJhdXRvIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAg
IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgIH0KKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVjdCog
SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiB7CkBAIC03NjQsMTQgKzExMDIsMjMgQEAgSlNPYmplY3QqIEludGxOdW1i
ZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFj
dFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1i
ZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJl
cihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNl
R3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCB1c2VH
cm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOwogICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBhY3REaXNwbGF5KSkp
OwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRpc3BsYXlTdHJpbmco
bV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCByb3VuZGluZ01vZGVT
dHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1iZXIobV9yb3VuZGluZ0luY3Jl
bWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJh
aWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0cmFpbGluZ1plcm9EaXNw
bGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtNzgwLDUyICsxMTI3LDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQog
ICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVND
SUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxO
dW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgc3dpdGNoIChm
aWVsZCkgewotICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgotICAgICAgICBpZiAoc3RkOjpp
c25hbih2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKLSAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiaW5maW5pdHkiX3M7Ci0g
ICAgICAgIHJldHVybiAiaW50ZWdlciJfczsKLSAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7Ci0gICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQ
QVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7Ci0gICAgY2FzZSBVTlVN
X0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRv
ciJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJu
ICJleHBvbmVudE1pbnVzU2lnbiJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6Ci0g
ICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOwotICAgIGNhc2UgVU5VTV9HUk9VUElO
R19TRVBBUkFUT1JfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZ3JvdXAiX3M7Ci0gICAgY2FzZSBV
TlVNX0NVUlJFTkNZX0ZJRUxEOgotICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOwotICAgIGNh
c2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQi
LCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCi0gICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQt
ZW4tVVMuanMKLSAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHls
ZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKLSAgICBjYXNlIFVOVU1fU0lH
Tl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWdu
Il9zIDogInBsdXNTaWduIl9zOwotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKLSAg
ICBjYXNlIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEOgotICAgICAgICByZXR1cm4gInVuaXQiX3M7
Ci0gICAgY2FzZSBVTlVNX0NPTVBBQ1RfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiY29tcGFjdCJf
czsKLSNlbmRpZgotICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJl
IGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCi0gICAg
Ly8gSWYgdGhleSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0
IHR5cGVzLCBzbyBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCi0gICAgY2FzZSBVTlVNX1BFUk1J
TExfRklFTEQ6Ci0gICAgLy8gQW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1h
dEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQu
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwotICAgIH0KLSAgICBy
ZXR1cm4gInVua25vd24iX3M7Ci19Ci0KLXZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlIHN0eWxlLCBk
b3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYg
aXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVy
VHlwZSBudW1iZXJUeXBlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0
b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTg2OCw3ICsxMTcwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUK
ICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwogICAg
ICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50
SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0g
ICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxp
dGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZp
ZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9
IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5n
KHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxl
LCBzaWduLCBudW1iZXJUeXBlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJp
bmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7
CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBl
LCBwYXJ0VHlwZSk7CkBAIC04OTQsNyArMTE5Niw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFs
CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwotICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWRO
dW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVt
Zl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksICZzdGF0dXMpOwpAQCAtOTE1LDE2ICsxMjE3LDYzIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdl
dCgpKTsKICNlbmRpZgogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsK
KyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisgICAg
SlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRp
Z3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0ludGVy
bmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywg
aXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIHBhcnRzOworfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBj
b25zdCBhdXRvJiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+
KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1
dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElD
VURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
CisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7
CisKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0
VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVz
dWx0R2V0QWxsRmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5n
ZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
YSBudW1iZXIuIl9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0
ci5nZXQoKSk7CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3Vs
dCkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgZm9ybWF0
VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmlu
ZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2Jq
ZWN0LCBtX3N0eWxlLCB2YWx1ZS5zaWduKCksIHZhbHVlLm51bWJlclR5cGUoKSwgcmVzdWx0U3Ry
aW5nLCBpdGVyYXRvciwgcGFydHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICByZXR1cm4gcGFydHM7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgK
aW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3NjlhOTE0OWRiY2E4NTdkZS4uM2NlZmY4ZmE3
NmIyNWQ1ZGZjNTg3NjE0YWIyZDI5NjFlNDk1YmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMzgsMTkgKzM4LDExMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKLSNpbmNs
dWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNpZiAhZGVmaW5lZChIQVZFX0lDVV9V
X05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0g
NjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSIDEKKyNlbmRpZgog
I2VuZGlmCiAKK3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyOworc3RydWN0IFVOdW1iZXJSYW5nZUZv
cm1hdHRlcjsKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEludGxGaWVsZEl0ZXJhdG9yOwog
Y2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6
IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFj
dGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBj
bGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZp
Y2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9OworZW51bSBjbGFzcyBJ
bnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRvLCBNb3JlUHJlY2lzaW9uLCBMZXNz
UHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVpbnQ4X3QgeyBTdGFuZGFy
ZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKIHRlbXBsYXRlPHR5cGVuYW1l
IEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVj
dCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRp
b24pOwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0
RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJbnRsVHlwZSosIFN0cmluZ0J1aWxkZXImKTsKKworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVs
ZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3Jt
YXR0ZXIqKTsKK307CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9Owor
I2VuZGlmCisKK2NsYXNzIEludGxNYXRoZW1hdGljYWxWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQoSW50bE1hdGhlbWF0aWNhbFZhbHVlKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIE51bWJlclR5cGUgeyBJbnRlZ2VyLCBJbmZpbml0eSwgTmFOLCB9OworICAgIHVzaW5nIFZh
bHVlID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgQ1N0cmluZz47CisKKyAgICBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBJbnRsTWF0aGVtYXRpY2FsVmFs
dWUoZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1fbnVtYmVyVHlwZShudW1iZXJUeXBlRnJvbURv
dWJsZSh2YWx1ZSkpCisgICAgICAgICwgbV9zaWduKHN0ZDo6c2lnbmJpdCh2YWx1ZSkpCisgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7IH0KKworICAgIGV4cGxpY2l0IEludGxNYXRoZW1h
dGljYWxWYWx1ZShOdW1iZXJUeXBlIG51bWJlclR5cGUsIGJvb2wgc2lnbiwgQ1N0cmluZyB2YWx1
ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVtYmVyVHlwZSkKKyAgICAgICAgLCBtX3NpZ24o
c2lnbikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGVuc3VyZU5vbkRvdWJsZSgpCisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxkb3VibGU+KG1fdmFsdWUpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbnVtYmVyVHlw
ZSkgeworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpJbnRlZ2VyOiB7CisgICAgICAgICAg
ICAgICAgZG91YmxlIHZhbHVlID0gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RkOjpzaWduYml0KHZhbHVlKSAmJiAhdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIG1fdmFsdWUgPSBDU3RyaW5nKCItMCIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZSA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IENTdHJpbmcoIm5h
biIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBl
OjpJbmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0gQ1N0cmluZyhtX3NpZ24gPyAi
LWluZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVyVHlwZSBudW1iZXJUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUdldERvdWJsZSgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+
KG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIGNvbnN0IENTdHJpbmcm
IGdldFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxDU3Ry
aW5nPihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVtYmVyVHlwZSBudW1iZXJUeXBl
RnJvbURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoc3RkOjppc25hbih2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6TmFOOworICAgICAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE51bWJlclR5cGU6Oklu
ZmluaXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50ZWdlcjsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBOdW1iZXJUeXBlOjpJbnRlZ2Vy
IH07CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZhbHVlIG1fdmFsdWUgeyAwLjAg
fTsKK307CiAKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CkBAIC03NiwyNCArMTY3LDM2IEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFs
dWUgb3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRv
dWJsZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0lu
dCopIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhl
bWF0aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1h
dGljYWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91
YmxlLCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNv
bnN0OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQo
Vk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90
IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lk
IGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0
cmluZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxW
YWx1ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJh
dG9yJiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxl
dG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJG
b3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3Vu
ZGluZ1R5cGUpOworCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMjA4LDEwIEBA
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291
bnRpbmcgfTsKICAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBO
YXJyb3csIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7
IFNob3J0LCBMb25nIH07Ci0gICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBB
dXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlz
cGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2
ZSB9OworICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRv
LCBTdHJpcElmSW50ZWdlciB9OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90
IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdN
b2RlIDogdWludDhfdCB7IENlaWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFs
ZkZsb29yLCBIYWxmRXhwYW5kLCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDE0ICsyMTks
MTcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNw
bGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBh
Y3REaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNwbGF5U3RyaW5nKFNp
Z25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nTW9kZVN0cmluZyhS
b3VuZGluZ01vZGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHJhaWxpbmdaZXJvRGlzcGxh
eVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB1c2VHcm91
cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRG
dW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIp
Ci0gICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1mX2Ns
b3NlPjsKLSAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51
bWZfY2xvc2VSZXN1bHQ+OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBV
TnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7CisjaWYgSEFWRShJQ1Vf
VV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXI7CisjZW5kaWYKICNlbHNlCi0gICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9y
bWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+PiBtX251bWJlckZvcm1hdDsKICNlbmRpZgogCkBA
IC0xMzMsNiArMjQyLDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7
IDMgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAg
ICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBtX3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6
RGVjaW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKICAgICBD
dXJyZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMjUwLDkgQEAgY2xhc3MgSW50
bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBDb21w
YWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIEludGxOb3RhdGlvbiBtX25vdGF0aW9u
IHsgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRpc3Bs
YXk7Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIFRyYWlsaW5nWmVyb0Rp
c3BsYXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byB9
OworICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91cGluZzo6QWx3YXlzIH07
CisgICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kIH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAyM2QzODYz
ZDE2MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi4xYWY0MWVhMjEyM2I1ZDZmYTI5MWNh
ZmQzZjJlZjYyZGVhYjc4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKIApAQCAtNjEsNDcgKzYyLDEzNSBAQCB2
b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRl
Z2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5k
aW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICB1
bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11
bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKKyAgICBJbnRsUm91
bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQ
cmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGlu
Z1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsg
Im1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0s
IHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9u
IH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVBy
ZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6
OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBi
b29sIGhhc1NkID0gIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkg
fHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9v
bCBoYXNGZCA9ICFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFt
YXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNk
ID0gaGFzU2QgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0
bzsKKyAgICBib29sIG5lZWRGZCA9ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9u
OjpDb21wYWN0KSB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpB
dXRvOworCisgICAgaWYgKG5lZWRTZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAyMSwgMjEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IDE7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzID0gMjE7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1pbmltdW1G
cmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVm
aW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25l
ZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVk
IHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNp
ZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAg
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVk
VmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlv
bkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGln
aXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBp
cyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgIGlmIChuZWVkRmQpIHsKKyAgICAgICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAg
ICBjb25zdGV4cHIgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAg
ICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAg
ICAgIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAg
ICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAo
bWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRz
Il9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKICAgICAgICAgfQotICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0
aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5n
OwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAg
aWYgKHJvdW5kaW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNp
b24pCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6TW9yZVByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0
eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lz
aW9uOworICAgICAgICBlbHNlIGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+
bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lz
aW9uOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsK
KyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKICAgICB9Cit9
CiAKLSAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
RnJhY3Rpb25EaWdpdHM7Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNlLT5tX21h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3ZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRp
b25zVG9Ta2VsZXRvbihJbnRsVHlwZSogaW50bEluc3RhbmNlLCBTdHJpbmdCdWlsZGVyJiBza2Vs
ZXRvbkJ1aWxkZXIpCit7CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRv
bnMubWQjaW50ZWdlci13aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRlZ2Vy
LXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8v
IFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0
czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBpZiAo
aW50bEluc3RhbmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHByZWNpc2lvbi1pbmNyZW1lbnQvIik7CisgICAgICAgIGF1dG8g
c3RyaW5nID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDEwPj4oaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKGludGxJbnN0YW5jZS0+
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPj0gc3RyaW5nLnNpemUoKSkgeworICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiMC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAoaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIHN0cmlu
Zy5zaXplKCkpOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
MCcpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLnNpemUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBub25GcmFjdGlvbiA9IHN0cmluZy5zaXplKCkgLSBpbnRsSW5zdGFuY2UtPm1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IHN3aXRjaCAoaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSkgeworICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7CisgICAgICAgICAgICAvLyBodHRwczov
L2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zv
cm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsg
KytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzIC0gaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2ln
bmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJl
cnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMgLSBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgorICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgICAgICAvLyBCZWZvcmUgSW50bC5OdW1iZXJGb3JtYXQgdjMsIGl0IHdhcyBD
b21wYWN0Um91bmRpbmcgbW9kZSwgd2hlcmUgd2UgZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4K
KyAgICAgICAgICAgIC8vIFNvLCBpZiBsaW5rZWQgSUNVIGlzIH42OCwgd2UgZG8gbm90aGluZy4K
KyAgICAgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9k
N2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0CisgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAgICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
MCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFu
Y2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOwor
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91
bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJ
dGVyYXRvciB7CkBAIC0xMjgsNCArMjE3LDU3IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJ
bnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAg
ICAgcmV0dXJuIHVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0
PihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25z
dHJ1Y3RvcigpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVy
Zm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQvZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGlj
YWx2YWx1ZQoraW5saW5lIEludGxNYXRoZW1hdGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxW
YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0
cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUg
eyBudW1iZXIudmFsdWUoKSB9OworCisgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1By
aW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJl
cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmln
SW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKSAtPiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6
dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0
aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkgfTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2
YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAg
ICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAg
ICAgIGJpZ0ludC0+c2lnbigpLAorICAgICAgICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAg
IH07CisgICAgfTsKKworICAgIGlmIChwcmltaXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZSkpOworCisgICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUg
eyBwcmltaXRpdmUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJp
bmcgPSBhc1N0cmluZyhwcmltaXRpdmUpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmln
SW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHN0cmluZyk7CisgICAgaWYgKGJpZ0lu
dCkgeworICAgICAgICAvLyBJZiBpdCBpcyAtMCwgd2UgY2Fubm90IGhhbmRsZSBpdCBpbiBKU0Jp
Z0ludC4gUmVwYXJzZSB0aGUgc3RyaW5nIGFzIGRvdWJsZS4KKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpICYmICF2YWx1ZS5iaWdJbnQzMkFzSW50MzIo
KSkKKyAgICAgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBqc1RvTnVtYmVy
KHN0cmluZykgfTsKKyNlbmRpZgorICAgICAgICBpZiAoYmlnSW50LmlzSGVhcEJpZ0ludCgpICYm
ICFhc0hlYXBCaWdJbnQoYmlnSW50KS0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gSW50
bE1hdGhlbWF0aWNhbFZhbHVlIHsganNUb051bWJlcihzdHJpbmcpIH07CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFs
T2JqZWN0LCBiaWdJbnQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZh
bHVlIHsganNUb051bWJlcihzdHJpbmcpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjliMTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0
NmJlNzI4Li5jYmVmNjA5MDk5NzJkNmFjMmI2ZThkZmVkOWNkMDQ0NDYwNmYyMDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzksMTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAg
Y29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIklu
dGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQKICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNSBAQCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewog
fQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1udW1iZXItZm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYg
Kzk0LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zv
cm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJp
Z0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIo
KSkgewotICAgICAgICBkb3VibGUgdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0
aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBp
ZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1
ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmln
SW50MzJBc0ludDMyKCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgor
ICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9y
TnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKLSAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51
bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZv
cm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEz
Nyw2ICsxMzIsMzggQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBu
b3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4KKyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKworICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisKKyAgICBpZiAoc3RhcnRWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVl
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8g
c3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9
IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJl
ciA9IHN0YXJ0LnRyeUdldERvdWJsZSgpKSB7CisgICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9
IGVuZC50cnlHZXREb3VibGUoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0
LCBzdGFydE51bWJlci52YWx1ZSgpLCBlbmROdW1iZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkp
KTsKK30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTE1MCwxMCArMTc3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAg
aWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51
bWJlckZvcm1hdCJfcykpOwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAg
IGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2YWx1ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5m
b3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgbnVtYmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91
YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgKaW5kZXggNjE3NWY5ZGQwOTM3OTI5ZjhmZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMz
N2Q2MGY2Njc4NDBiY2MwNGEzMjQ4M2JjZTBhNmE0NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
aApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAx
OTZlOGY0MTI0NjM2MWEuLjQxYzJiZmRmNmVlNTE1YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaApAQCAtMTUxLDYgKzE1MSw0NSBAQCBSZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJl
dHVybiBmYWxsYmFjazsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3Vs
dFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBl
IHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFs
IG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0VHlwZSBmYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2Rp
ZmYuaHRtbCNzZWMtZ2V0c3RyaW5nb3Jib29sZWFub3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVz
LnNpemUoKSA+IDApOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghb3B0aW9ucykK
KyAgICAgICAgcmV0dXJuIGZhbGxiYWNrOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlm
ICh2YWx1ZS5pc0Jvb2xlYW4oKSAmJiB2YWx1ZS5hc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlVmFsdWU7CisKKyAgICAgICAgYm9vbCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jv
b2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlQm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzeVZhbHVlOworCisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAg
ICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IHN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeS5zZWNvbmQ7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5k
TWVzc2FnZSkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBmYWxs
YmFjazsKK30KIAogQUxXQVlTX0lOTElORSBib29sIGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJp
c29uKFVDaGFyIGNoYXJhY3RlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYy
YmZjM2QyOGEzNWU0ODkuLjRjMjFhM2FjM2ZhMDRiMTgzOTVjZGU5ZGIxZmE1NGVkZmQxOTdmYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcApAQCAtMzIsOCArMzIsMjYgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRl
ZiBVX0hJREVfRFJBRlRfQVBJCisjZW5kaWYKKyNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxl
cy5oPgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2Rl
L3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgor
I2VuZGlmCisjZGVmaW5lIFVfSElERV9EUkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAor
dm9pZCBVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFs
UnVsZXMpCit7CisgICAgaWYgKHBsdXJhbFJ1bGVzKQorICAgICAgICB1cGxydWxlc19jbG9zZShw
bHVyYWxSdWxlcyk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxl
dGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTI1LDM0IEBAIHZvaWQg
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2Jh
bE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxl
ID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBt
X2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7
CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisK
KyAgICBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKHRoaXMsIHNrZWxl
dG9uQnVpbGRlcik7CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0
byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwor
ICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIs
IFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUo
dXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwg
JnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFs
UnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1C
RVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxl
dGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFj
ayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NP
TExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vs
c2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBV
TnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwg
bG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0x
MjUsMTMgKzE2OSwxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1
bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElH
SVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNz
UHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVy
YWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVf
T1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFs
UnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVy
Pih1cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3Jk
aW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxl
cyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsyMDMsMTIgQEAgSlNPYmplY3QqIElu
dGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQ
cmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFj
dGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25E
aWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGln
aXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERp
Z2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC0xODMsOCArMjMxLDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVn
b3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJl
ckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAt
MTk5LDEyICsyNDgsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1i
ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFs
dWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwg
dmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNo
YXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVk
TnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
c2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
YnVmZmVyKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1
dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgp
LCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXpl
KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBs
dXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQu
ZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFO
R0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJS
YW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgm
c3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ug
b2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251
bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1
cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1
cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2Us
IG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLmViYzA0
YWE1Nzk5Y2U2Y2NhOGQzZGJmY2U5ZjgwNmE4MzY2MWVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMTYgQEAK
IAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0u
aD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CisKIG5hbWVzcGFj
ZSBKU0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOworfTsKKwogZW51bSBjbGFzcyBS
ZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQbHVyYWxSdWxlcyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTU5LDExICs2NCwxNyBAQCBjbGFz
cyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0Kiwg
dW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZy
YWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlv
bnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAgdm9pZCBpbml0
aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFs
dWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUg
dmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAg
ICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxlcyhW
TSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTczLDEx
ICs4NCwxNiBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgQ2FyZGluYWwsIE9yZGlu
YWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVwbHJ1
bGVzX2Nsb3NlPjsKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8
dW51bV9jbG9zZT47Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFs
UnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1B
VFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1h
dHRlckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVy
LCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlclJhbmdlRm9ybWF0dGVyOwor
I2VuZGlmCisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRl
cjx1bnVtX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJl
ckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJpbmcgbV9s
b2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKQEAgLTg1
LDYgKzEwMSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsK
ICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICB1bnNp
Z25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3Jv
dW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGluZ1R5
cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9OwogICAgIFR5cGUgbV90eXBl
IHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBiZmEy
MjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3YmE0
YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDkg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihp
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAmQmFz
ZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4odm0u
aGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwxNSBA
QCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxlc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05VTUJF
Ul9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3Qs
IChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9
CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1u
dW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxy
dWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1
bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxS
dWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQ
bHVyYWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b051
bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxS
dWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2VuZGlm
CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0Yi4u
NjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCAwYjU5NjYxMmZmOGMz
NWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1Li5jMjUzODUwMGZiOGUzNDE3Y2JmMWM2MDhhZWQ1
MjFiNzU0YmU5YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIEpTVmFs
dWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICBJbnRsRmllbGRJdGVyYXRv
ciBmaWVsZEl0ZXJhdG9yKCppdGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIEludGxOdW1iZXJGb3Jt
YXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6
OlN0eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9y
LCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7Cisg
ICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmpl
Y3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBzdGQ6OnNpZ25iaXQoYWJzVmFs
dWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKGFic1ZhbHVl
KSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNp
bmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li5i
NzYzMTY3MTQxNGM5M2M1ZmQ4NDQ5M2NjNDlhM2EzNzc2MjQ4MTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBKU0Jp
Z0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaGFzaFNsb3coKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3REb3Vi
bGUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBE
aWdpdCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2NzgsNDIgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50KiBiaWdJbnQpCiAgICAg
cmV0dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
SlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzTnVtYmVyKCk7CisKKyAgICBp
ZiAoIXZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIHZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisKKyAgICBBU1NFUlQodmFsdWUu
aXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJ
bnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgdWludDY0X3QgaW50ZWdlciA9IDA7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoRGlnaXQp
ID09IDgpIHsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgIT0gMSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGludGVnZXIgPSBiaWdJbnQtPmRpZ2l0KDAp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoRGlnaXQpID09IDQpOworICAg
ICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdpdCgwKTsKKyAgICAgICAgaWYg
KGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIGludGVnZXIgfD0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KDEpKSA8PCAzMik7CisgICAgfQorCisgICAgaWYg
KGludGVnZXIgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKQorICAg
ICAgICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0aWNfY2FzdDxkb3VibGU+KGludGVn
ZXIpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKTsKKworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwMmU1YzQxZTRiZDI2Mjg1OWU1MmNmNDkz
Mjc1YWE4OWJlY2Y1MWQ1Li42MGQ3ODI1NzFmM2Q5MDY4Yjk4Zjk4NjliMzEwZTFmZmJlOTE4MmNk
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY2IEBACisyMDIxLTEwLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJGb3JtYXQgdjMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6Cisg
ICAgICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAgIChuZi5mb3JtYXRSYW5nZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5mb3JFYWNoKToKKyAgICAgICAgKG5mLmZvcm1hdFJhbmdlVG9QYXJ0cy52
YWxpZFJhbmdlcy5mb3JFYWNoKToKKyAgICAgICAgKG5mNi5mb3JtYXRSYW5nZS5zaG91bGRUaHJv
dyk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzOgor
ICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVz
b2x2ZWQtbWF0Y2gtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
dmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKToK
KyAgICAgICAgKGludmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgICog
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS12My5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUt
dGFibGUtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoT2JqZWN0
LmtleXMuZXhwZWN0YXRpb25zLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC1yb3VuZGluZy1tb2RlLXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbGlkUm91bmRpbmdNb2RlLmZvckVh
Y2gpOgorICAgICAgICAoaW52YWxpZFJvdW5kaW5nTW9kZS5mb3JFYWNoKToKKyAgICAgICAgKGxl
dC5vcHRpb25zLmdldCBzaWduRGlzcGxheSk6CisgICAgICAgIChsZXQub3B0aW9ucy5nZXQgcm91
bmRpbmdNb2RlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNw
bGF5LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5LXJlc29sdmVkLW9wdGlvbnMt
djMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91
cGluZy12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgICh2YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoaW52
YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoYWxsLmZvckVhY2gpOgorICAgICAg
ICAobWdkMS5mb3JFYWNoKToKKyAgICAgICAgKG1nZDIuZm9yRWFjaCk6CisgICAgICAgICogc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzOgorICAgICAgICAodGVzdE51bWJlckZvcm1hdCk6Cisg
ICAgICAgIChzaG91bGRCZS50ZXN0TnVtYmVyRm9ybWF0LkludGwuTnVtYmVyRm9ybWF0KToKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAy
MS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCB0ZXN0MjYyIGJvdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZWYwNzM5MDYw
NDczZjBiNWE1OWI3OWVhZDgwOWYxMzA5ZWZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2UuanMKQEAgLTAsMCArMSwxMSBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoImVuLVVTIik7Citjb25zdCBzdGFydCA9IDk4NzY1NDMyMTk4NzY1NDMyMW47Citjb25z
dCBlbmQgPSA5ODc2NTQzMjE5ODc2NTQzMjJuOworc2hvdWxkQmUobmYuZm9ybWF0KHN0YXJ0KSwg
YDk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIxYCk7CitpZiAobmYuZm9ybWF0UmFuZ2UpCisgICAgc2hv
dWxkQmUobmYuZm9ybWF0UmFuZ2Uoc3RhcnQsIGVuZCksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMy
MeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIyMzdjMTcw
ZjE2Y2ExNmNiMjI4OTFlZWQ1YWE3NWU2MjM4MmM0MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5qcwpAQCAtMCwwICsx
LDIyMyBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAg
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBl
KSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSBi
dXQgZ290ICR7U3RyaW5nKGVycm9yKX0hYCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZE5vdFRocm93
KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2NvbnN0IHZhbGlkUmFuZ2VzID0gW1stMTIzNDUs
IC01Njc4XSwgWy0xMjM0NSwgNTY3ODldLCBbMTIzNDUsIDU2Nzg5XV07CisKK2NvbnN0IG5mID0g
bmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtzaWduRGlzcGxheTogImV4Y2VwdFplcm8ifSk7
CitpZiAobmYuZm9ybWF0UmFuZ2UpIHsKKyAgICBbJ2Zvcm1hdFJhbmdlJ10uZm9yRWFjaChmdW5j
dGlvbihtZXRob2QpIHsKKyAgICAgICAgc2hvdWxkQmUoImZ1bmN0aW9uIiwgdHlwZW9mIG5mW21l
dGhvZF0pOworCisgICAgICAgIC8vIDIuIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KG5m
LCBbW0luaXRpYWxpemVkTnVtYmVyRm9ybWF0XV0pLgorICAgICAgICAvLyBBc3NlcnQgaWYgY2Fs
bGVkIHdpdGhvdXQgbmYKKyAgICAgICAgbGV0IGYgPSBuZlttZXRob2RdOworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7IGYoMSwgMjMpIH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gQXNz
ZXJ0IG5vcm1hbCBjYWxsIHN1Y2Nlc3MKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZb
bWV0aG9kXSgxLCAyMykpOworCisgICAgICAgIC8vIDMuIElmIHN0YXJ0IGlzIHVuZGVmaW5lZCAu
Li4sIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBuZlttZXRob2RdKHVuZGVmaW5lZCwgMjMpIH0sIFR5cGVFcnJvcik7CisgICAgICAgIC8v
IDMuIElmIC4uLiBlbmQgaXMgdW5kZWZpbmVkLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24u
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxLCB1bmRlZmluZWQpIH0s
IFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gNC4gTGV0IHggYmUgPyBUb051bWVyaWMoc3RhcnQp
LgorICAgICAgICAvLyBWZXJpZnkgaXQgd29uJ3QgdGhyb3cgZXJyb3IKKyAgICAgICAgc2hvdWxk
Tm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXShudWxsLCAyMykpOworICAgICAgICBzaG91bGROb3RU
aHJvdygoKSA9PiBuZlttZXRob2RdKGZhbHNlLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJv
dygoKSA9PiBuZlttZXRob2RdKHRydWUsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgp
ID0+IG5mW21ldGhvZF0oIjEyIiwgMjMpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4g
bmZbbWV0aG9kXSgiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsIDIzKSk7CisgICAg
ICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXShTeW1ib2woMTIpLCAyMykgfSwgVHlw
ZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMp
KTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMm4sIDIzKSk7Cisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSh7fSwgLTIzKSB9LCBSYW5nZUVy
cm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4geyBuZlttZXRob2RdKFtdLCAyMykg
fSk7CisKKyAgICAgICAgLy8gNS4gTGV0IHkgYmUgPyBUb051bWVyaWMoZW5kKS4KKyAgICAgICAg
Ly8gVmVyaWZ5IGl0IHdvbid0IHRocm93IGVycm9yCisgICAgICAgIHNob3VsZE5vdFRocm93KCgp
ID0+IG5mW21ldGhvZF0oLTEyLCBudWxsKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+
IG5mW21ldGhvZF0oLTEyLCBmYWxzZSkpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBu
ZlttZXRob2RdKC0xMiwgdHJ1ZSkpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZltt
ZXRob2RdKDEyLCAiMjMiKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhv
ZF0oMTIsICIyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCBTeW1ib2woMjMpKSB9LCBUeXBlRXJyb3IpOwor
ICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAg
ICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyM24pKTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMiwge30pIH0sIFJhbmdlRXJyb3IpOworICAg
ICAgICBzaG91bGROb3RUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oLTEyLCBbXSkgfSk7CisKKyAg
ICAgICAgLy8gNi4gSWYgeCBpcyBOYU4gLi4uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9u
LgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oTmFOLCAyMykgfSwgUmFu
Z2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgiTmFOIiwg
MjMpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICAvLyA2LiBJZiAuLi4geSBpcyBOYU4sIHRocm93
IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZb
bWV0aG9kXSgxMiwgTmFOKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBuZlttZXRob2RdKDEyLCAiTmFOIikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgInh5eiIpIH0sIFJhbmdlRXJyb3IpOworCisg
ICAgICAgIC8vIDcuIElmIHggaXMgYSBub24tZmluaXRlIE51bWJlciAuLi4sIHRocm93IGEgUmFu
Z2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZbbWV0
aG9kXSgtMTIvMCwgMTIvMCkgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0
aG9kXSgxMi8wLCAtMTIvMCkgfSwgUmFuZ2VFcnJvcik7CisKKyAgICAgICAgLy8gOC4gSWYgeCBp
cyBncmVhdGVyIHRoYW4geSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAg
Ly8gbmVpdGhlciB4IG5vciB5IGFyZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsgbmZbbWV0aG9kXSgyMywgMTIpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RU
aHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAgICAvLyB4IGlzIG5vdCBiaWdp
bnQgYnV0IHkgaXMuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyMywg
MTJuKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0
aG9kXSgxMiwgMjNuKSk7CisgICAgICAgIC8vIHggaXMgYmlnaW50IGJ1dCB5IGlzIG5vdC4KKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDIzbiwgMTIpIH0sIFJhbmdlRXJy
b3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEybiwgMjMpKTsK
KyAgICAgICAgLy8gYm90aCB4IGFuZCB5IGFyZSBiaWdpbnQuCisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IHsgbmZbbWV0aG9kXSgyM24sIDEybikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNo
b3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTJuLCAyM24pKTsKKworICAgICAgICB2YWxp
ZFJhbmdlcy5mb3JFYWNoKAorICAgICAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgWCA9IEJpZ0ludCh4KTsKKyAgICAgICAgICAgICAgICBjb25zdCBZID0g
QmlnSW50KHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X3kgPSBuZlttZXRo
b2RdKHgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX3kgPSBuZlttZXRo
b2RdKFgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF94X1kgPSBuZlttZXRo
b2RdKHgsIFkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZF9YX1kgPSBuZlttZXRo
b2RdKFgsIFkpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1h
dHRlZF9YX3kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1h
dHRlZF94X1kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZvcm1hdHRlZF94X3ksIGZvcm1h
dHRlZF9YX1kpOworCisgICAgICAgICAgICB9KTsKKyAgICB9KTsKK30KKworLy8gQ2hlY2sgdGhl
IG51bWJlciBvZiBwYXJ0IHdpdGggdHlwZTogInBsdXNTaWduIiBhbmQgIm1pbnVzU2lnbiIgYXJl
IGNvcnJlCitpZiAobmYuZm9ybWF0UmFuZ2VUb1BhcnRzKSB7CisgICAgdmFsaWRSYW5nZXMuZm9y
RWFjaCgKKyAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAgICAgICAgICBjb25zdCBleHBl
Y3RlZFBsdXMgPSAoeCA+IDApID8gKCh5ID4gMCkgPyAyIDogMSkgOiAoKHkgPiAwKSA/IDEgOiAw
KTsKKyAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTWludXMgPSAoeCA8IDApID8gKCh5IDwgMCkg
PyAyIDogMSkgOiAoKHkgPCAwKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIGxldCBhY3R1YWxQbHVz
ID0gMDsKKyAgICAgICAgICAgIGxldCBhY3R1YWxNaW51cyA9IDA7CisgICAgICAgICAgICBjb25z
dCBwYXJ0cyA9IG5mLmZvcm1hdFJhbmdlVG9QYXJ0cyh4LCB5KTsKKyAgICAgICAgICAgIHBhcnRz
LmZvckVhY2goZnVuY3Rpb24ocGFydCkgeworICAgICAgICAgICAgICAgIGlmIChwYXJ0LnR5cGUg
PT0gInBsdXNTaWduIikgYWN0dWFsUGx1cysrOworICAgICAgICAgICAgICAgIGlmIChwYXJ0LnR5
cGUgPT0gIm1pbnVzU2lnbiIpIGFjdHVhbE1pbnVzKys7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGNvbnN0IG1ldGhvZCA9ICJmb3JtYXRSYW5nZVRvUGFydHMoIiArIHggKyAiLCAiICsg
eSArICIpOiAiOworICAgICAgICAgICAgc2hvdWxkQmUoZXhwZWN0ZWRQbHVzLCBhY3R1YWxQbHVz
LAorICAgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2YgdHlwZTogJ3BsdXNTaWduJyBp
biBwYXJ0cyBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKGV4cGVjdGVkTWlu
dXMsIGFjdHVhbE1pbnVzLAorICAgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2YgdHlw
ZTogJ21pbnVzU2lnbicgaW4gcGFydHMgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgIH0pOworfQor
CisvLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtbnVtYmVyZm9y
bWF0LXYzI2Zvcm1hdHJhbmdlLWVjbWEtNDAyLTM5MworY29uc3QgbmYyID0gbmV3IEludGwuTnVt
YmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5j
eTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CisKKy8vIFJFQURN
RS5tZCBzYWlkIGl0IGV4cGVjdCAi4oKsM+KAkzUiCitpZiAobmYyLmZvcm1hdFJhbmdlKQorICAg
IHNob3VsZEJlKCLigqwzIOKAkyDigqw1IiwgbmYyLmZvcm1hdFJhbmdlKDMsIDUpKTsKKworY29u
c3QgbmYzID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1
cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAwLAorfSk7CitpZiAobmYzLmZvcm1hdFJhbmdlVG9QYXJ0cykgeworICAgIGNvbnN0IGFjdHVh
bDMgPSBuZjMuZm9ybWF0UmFuZ2VUb1BhcnRzKDMsIDUpOworICAgIC8qCisgICAgWworICAgICAg
e3R5cGU6ICJjdXJyZW5jeSIsIHZhbHVlOiAi4oKsIiwgc291cmNlOiAic3RhcnRSYW5nZSJ9Cisg
ICAgICB7dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjMiLCBzb3VyY2U6ICJzdGFydFJhbmdlIn0K
KyAgICAgIHt0eXBlOiAibGl0ZXJhbCIsIHZhbHVlOiAi4oCTIiwgc291cmNlOiAic2hhcmVkIn0K
KyAgICAgIHt0eXBlOiAiaW50ZWdlciIsIHZhbHVlOiAiNSIsIHNvdXJjZTogImVuZFJhbmdlIn0K
KyAgICBdCisgICAgKi8KKyAgICBzaG91bGRCZSg1LCBhY3R1YWwzLmxlbmd0aCk7CisgICAgc2hv
dWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1swXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwg
YWN0dWFsM1swXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzBd
LnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImludGVnZXIiLCBhY3R1YWwzWzFdLnR5cGUpOworICAg
IHNob3VsZEJlKCIzIiwgYWN0dWFsM1sxXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0UmFu
Z2UiLCBhY3R1YWwzWzFdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImxpdGVyYWwiLCBhY3R1YWwz
WzJdLnR5cGUpOworICAgIHNob3VsZEJlKCIg4oCTICIsIGFjdHVhbDNbMl0udmFsdWUpOworICAg
IHNob3VsZEJlKCJzaGFyZWQiLCBhY3R1YWwzWzJdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImN1
cnJlbmN5IiwgYWN0dWFsM1szXS50eXBlKTsKKyAgICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1sz
XS52YWx1ZSk7CisgICAgc2hvdWxkQmUoImVuZFJhbmdlIiwgYWN0dWFsM1szXS5zb3VyY2UpOwor
ICAgIHNob3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1s0XS50eXBlKTsKKyAgICBzaG91bGRCZSgi
NSIsIGFjdHVhbDNbNF0udmFsdWUpOworICAgIHNob3VsZEJlKCJlbmRSYW5nZSIsIGFjdHVhbDNb
NF0uc291cmNlKTsKK30KKworY29uc3QgbmY0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1V
UyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmY0LmZvcm1hdFJhbmdlKQorICAg
IHNob3VsZEJlKCJ+4oKsMyIsIG5mNC5mb3JtYXRSYW5nZSgyLjksIDMuMSkpOworCitjb25zdCBu
ZjUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIiwgeworICAgIHN0eWxlOiAiY3VycmVu
Y3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBzaWduRGlzcGxheTogImFsd2F5cyIsCit9
KTsKK2lmIChuZjUuZm9ybWF0UmFuZ2UpCisgICAgc2hvdWxkQmUoIn4r4oKsMy4wMCIsIG5mNS5m
b3JtYXRSYW5nZSgyLjk5OSwgMy4wMDEpKTsKKworY29uc3QgbmY2ID0gbmV3IEludGwuTnVtYmVy
Rm9ybWF0KCJlbiIpOworaWYgKG5mNi5mb3JtYXRSYW5nZSkgeworICAgIHNob3VsZEJlKCIz4oCT
4oieIiwgbmY2LmZvcm1hdFJhbmdlKDMsIDEvMCkpOworICAgIHNob3VsZFRocm93KCgpID0+IHsg
bmY2LmZvcm1hdFJhbmdlKDMsIDAvMCk7IH0sIFJhbmdlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy12My5qcyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2RhZDkyZGMzMTAwNmUzMWQyOTlhZTg0OTAyODMyZWFhMGM3MzU0NwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmct
djMuanMKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3Qg
YXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAg
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsg
ZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMi
KTsKK2NvbnN0IHN0cmluZyA9ICI5ODc2NTQzMjE5ODc2NTQzMjEiOworY29uc3Qgc3RyaW5nMiA9
ICI5ODc2NTQzMjE5ODc2NTQzMjIiOworc2hvdWxkQmUobmYuZm9ybWF0KHN0cmluZyksIGA5ODcs
NjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5mLmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJl
KG5mLmZvcm1hdFJhbmdlKHN0cmluZywgc3RyaW5nMiksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMy
MeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzJmMTNiZGYzNzg2
NGVlYmY4YzZkNzQyOTYxNTJiZjlhZWM1MDk1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy5qcwpAQCAtMCwwICsxLDEzIEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgiZW4tVVMiKTsKK3Nob3VsZEJlKG5mLmZvcm1hdCgiNTQuMzIxIiksIGA1NC4zMjFgKTsK
K2lmIChuZi5mb3JtYXRSYW5nZSkgeworICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKCItNTQu
MzIxIiwgIis1NC4zMjEiKSwgYC01NC4zMjEg4oCTIDU0LjMyMWApOworICAgIHNob3VsZEJlKG5m
LmZvcm1hdFJhbmdlKCItNTQuMzIxIiwgIjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwIiksIGAtNTQuMzIxIOKAkyAyMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAs
MDAwLDAwMCwwMDAsMDAwLDAwMCwwMDBgKTsKKyAgICBzaG91bGRCZShuZi5mb3JtYXRSYW5nZSgi
LTAiLCAiMCIpLCBgLTAg4oCTIDBgKTsKKyAgICBzaG91bGRCZShuZi5mb3JtYXRSYW5nZSgiLTAi
LCAiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLCBgLTAg
4oCTIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAw
LDAwMCwwMDBgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LWZvcm1hdC10by1wYXJ0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LWZvcm1hdC10by1wYXJ0cy5qcwppbmRleCBlZjcxZjBmMWM2YzU0MWRmYTliYzM0NDFhYTFiM2Y0
MDdjZDVlODAzLi5jY2Y5N2VjMjQxNTZkZDJkNGQyYzlhMDVmMjQ0YmM1YmQ4NjM2NDUwIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMu
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRz
LmpzCkBAIC01NywzICs1NywzNSBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CiBzaG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHVzZUdyb3VwaW5nOiBm
YWxzZSB9KS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpLmxlbmd0aCwgMSk7CiBzaG91
bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5m
b3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpWzBdLnZhbHVlLmxlbmd0aCwgMzA5KTsKIHNo
b3VsZEJlKEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoTnVtYmVyLk1B
WF9WQUxVRSkubGVuZ3RoLCAyMDUpOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeSgK
KyAgICAgICAgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJykuZm9ybWF0VG9QYXJ0cyg0MDAwbikK
KyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIs
InZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9LAorICAg
ICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiIwMDAifQorICAgIF0pKTsKKworc2hvdWxk
QmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1V
UycpLmZvcm1hdFRvUGFydHMoLTQwMDBuKQorICAgICksCisgICAgSlNPTi5zdHJpbmdpZnkoWwor
ICAgICAgICB7InR5cGUiOiJtaW51c1NpZ24iLCJ2YWx1ZSI6Ii0ifSwKKyAgICAgICAgeyJ0eXBl
IjoiaW50ZWdlciIsInZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5cGUiOiJncm91cCIsInZhbHVl
IjoiLCJ9LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiIwMDAifQorICAgIF0p
KTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVy
Rm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoIi00MDAwIikKKyAgICApLAorICAgIEpTT04u
c3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoibWludXNTaWduIiwidmFsdWUiOiItIn0sCisg
ICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoi
Z3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoi
MDAwIn0KKyAgICBdKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gt
djMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzIxZTY1NGVmOTg3NTZjOGQxZDc2MWJhMjA5NTM2MDM3NDRhYzBj
YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJv
dW5kaW5nLWluY3JlbWVudC1yZXNvbHZlZC1tYXRjaC12My5qcwpAQCAtMCwwICsxLDQxIEBACisv
LyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQK
Ky8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
Ly8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCB2YWxp
ZFJvdW5kaW5nSW5jcmVtZW50cyA9IFsKKyAgICAxLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAy
MDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCitdOworCit2YWxpZFJvdW5kaW5n
SW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5jcmVtZW50KSB7CisgICAgbGV0
IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50
fSk7CisgICAgc2hvdWxkQmUocm91bmRpbmdJbmNyZW1lbnQsIG5mLnJlc29sdmVkT3B0aW9ucygp
LnJvdW5kaW5nSW5jcmVtZW50KTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAz
MmE5MzFhYzE0MTUyMmE4MjZmMDlhYzkwYThiY2ZkMGY0ZTgyMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdjMu
anMKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworCitsZXQg
dmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBbCisgICAgMSwgMiwgNSwgMTAsIDIwLCA1MCwgMTAw
LCA1MDAsIDEwMDAsIDUwMDAKK107CisKK2xldCBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnRzID0g
WworICAgIC0xLCAtNSwgMCwgMTAwMSwgMTEwMCwgNTUwMCwgMjAwMDAwLCA1MDAwMDUsIDEwMDAw
MDAwLCAxMDAwMCwgNTAwMDAsIDEwMDAwMCwgNTAwMDAwLCAxMDAwMDAwLAorICAgIDUwMDAwMDAK
K107CisKK3ZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJ
bmNyZW1lbnQpIHsKKyAgICBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRp
bmdJbmNyZW1lbnR9KTsKK30pOworCitpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2go
ZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgICAgIG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3VuZGluZ0luY3JlbWVu
dH0pCisgICAgfSwgUmFuZ2VFcnJvcik7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS12My5qcyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS12My5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MGYyNjhkOTg2YzE2ZTNmNDk3YWYzODQ1OGZlZWQ4OTA5ZDI2NDM2Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRp
bmctaW5jcmVtZW50LXZhbHVlLXYzLmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vIENvcHlyaWdodCAy
MDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAg
ICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworbGV0IHBlbm55ID0gbmV3
IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJlbiIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAy
LCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50OiAxIH0pOworbGV0
IG5pY2tlbCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICAiZW4iLCB7IG1pbmltdW1GcmFj
dGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLCByb3VuZGluZ0luY3JlbWVu
dDogNSB9KTsKK2xldCBkaW1lID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJlbiIsIHsg
bWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5k
aW5nSW5jcmVtZW50OiAxMCB9KTsKKworLy8gaHR0cHM6Ly9uZWNzLmNvbS9rbm93bGVkZ2ViYXNl
L3N5c3ByZWZzX3ByY19tb2Rfcm91bmRtZXRoLmh0bQorc2hvdWxkQmUoIjEwLjE1IiwgcGVubnku
Zm9ybWF0KDEwLjE1NCkpOworc2hvdWxkQmUoIjEwLjE2IiwgcGVubnkuZm9ybWF0KDEwLjE1NSkp
Oworc2hvdWxkQmUoIjEwLjEwIiwgbmlja2VsLmZvcm1hdCgxMC4xMjQpKTsKK3Nob3VsZEJlKCIx
MC4xNSIsIG5pY2tlbC5mb3JtYXQoMTAuMTI1KSk7CitzaG91bGRCZSgiMTAuNDAiLCBkaW1lLmZv
cm1hdCgxMC40NDQpKTsKKy8vIG1pc3Rha2UgaW4gdGhlIGFib3ZlIHBhZ2UsIHRoZSByZXN1bHQg
c2hvdWxkIGJlIDEwLjQwIG5vdCAxMC41MAorc2hvdWxkQmUoIjEwLjQwIiwgZGltZS5mb3JtYXQo
MTAuNDQ1KSk7CitzaG91bGRCZSgiMTAuNDAiLCBkaW1lLmZvcm1hdCgxMC40NDUpKTsKK3Nob3Vs
ZEJlKCIxMC41MCIsIGRpbWUuZm9ybWF0KDEwLjQ1KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdmFsdWUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdmFsdWUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjA0YjFhNmY0YTNjNjE3NTg3MGQyZjc0OGEyMzEyZDg2ZjAyYjQwZgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5n
LWluY3JlbWVudC12YWx1ZS5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7
Cit9CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM6IDMsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywgcm91bmRpbmdJbmNyZW1lbnQ6
IDEwIH0pLmZvcm1hdCg1NTU1NTU1NTU1NS41NTU1NTUpLCBgNTUsNTU1LDU1NSw1NTUuNTYwYCk7
CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEw
MCB9KS5mb3JtYXQoNTU1NTU1NTU1NTUuNTU1NTU1KSwgYDU1LDU1NSw1NTUsNTU2LjAwYCk7Citz
aG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNCwgcm91bmRpbmdJbmNyZW1lbnQ6IDEwMDAg
fSkuZm9ybWF0KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUsNTU1LDU1NS42MDAwYCk7Citz
aG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEwMDAg
fSkuZm9ybWF0KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUsNTU1LDU2MC4wMGApOworc2hv
dWxkQmUobmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRz
OiAxLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEsIHJvdW5kaW5nSW5jcmVtZW50OiAxMDAwIH0p
LmZvcm1hdCg1NTU1NTU1NTU1NS41NTU1NTUpLCBgNTUsNTU1LDU1NSw2MDAuMGApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS10YWJs
ZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUt
dGFibGUtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRjZjlhMzAzZjQ1NTVhMWMyZmU5ZjNlMDZkMmMyZjhm
MWQ3Mjk4OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMKQEAgLTAsMCArMSw2MSBAQAorLy8gQ29weXJp
Z2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQgKyAiICIgKyBt
ZXNzYWdlKTsKK30KKworLy8gQ2hlY2sgdGhlIHJvdW5kaW5nIGJlaGF2aW9yLgorLy8gQmFzZWQg
b24gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9udW1i
ZXJmb3JtYXQvZGlmZi5odG1sI3RhYmxlLWludGwtcm91bmRpbmctbW9kZXMKK2xldCBpbnB1dHMg
PSBbLTEuNSwgMC40LCAwLjUsIDAuNiwgMS41XTsKK2xldCBleHBlY3RhdGlvbnMgPSB7CisgICAg
ImNlaWwiOiAgICAgICBbIi0xIiwgIjEiLCAiMSIsICIxIiwgIjIiXSwKKyAgICAiZmxvb3IiOiAg
ICAgIFsiLTIiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAgICJleHBhbmQiOiAgICAgWyItMiIs
ICIxIiwgIjEiLCAiMSIsICIyIl0sCisgICAgInRydW5jIjogICAgICBbIi0xIiwgIjAiLCAiMCIs
ICIwIiwgIjEiXSwKKyAgICAiaGFsZkNlaWwiOiAgIFsiLTEiLCAiMCIsICIxIiwgIjEiLCAiMiJd
LAorICAgICJoYWxmRmxvb3IiOiAgWyItMiIsICIwIiwgIjAiLCAiMSIsICIxIl0sCisgICAgImhh
bGZFeHBhbmQiOiBbIi0yIiwgIjAiLCAiMSIsICIxIiwgIjIiXSwKKyAgICAiaGFsZlRydW5jIjog
IFsiLTEiLCAiMCIsICIwIiwgIjEiLCAiMSJdLAorICAgICJoYWxmRXZlbiI6ICAgWyItMiIsICIw
IiwgIjAiLCAiMSIsICIyIl0sCit9OworT2JqZWN0LmtleXMoZXhwZWN0YXRpb25zKS5mb3JFYWNo
KGZ1bmN0aW9uKHJvdW5kaW5nTW9kZSkgeworICAgIGxldCBleHAgPSBleHBlY3RhdGlvbnNbcm91
bmRpbmdNb2RlXTsKKyAgICBsZXQgaWR4ID0gMDsKKyAgICBsZXQgbmYgPSBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQoImVuIiwge3JvdW5kaW5nTW9kZSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwfSk7
CisgICAgc2hvdWxkQmUocm91bmRpbmdNb2RlLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGlu
Z01vZGUpOworICAgIGlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGlucHV0KSB7CisgICAgICAgIGxl
dCBtc2cgPSAiaW5wdXQ6ICIgKyBpbnB1dCArICIgd2l0aCByb3VuZGluZ01vZGU6ICIgKyByb3Vu
ZGluZ01vZGU7CisgICAgICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY5KQorICAgICAgICAg
ICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0KSwgbXNnKTsKKyAgICAgICAg
ZWxzZSBpZiAocm91bmRpbmdNb2RlICE9PSAiaGFsZkNlaWwiICYmIHJvdW5kaW5nTW9kZSAhPT0g
ImhhbGZGbG9vciIpCisgICAgICAgICAgICBzaG91bGRCZShleHBbaWR4KytdLCBuZi5mb3JtYXQo
aW5wdXQpLCBtc2cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZi5mb3JtYXQoaW5wdXQp
IC8vIHNob3VsZCBub3QgdGhyb3cuCisgICAgfSkKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12My5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkx
N2E2YjkzNjM3MDIzNmFmYmM3ZWZjYjkxOTE3ZDU5OTAzMGM0YgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanMKQEAg
LTAsMCArMSwxMDEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAg
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4
cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkUm91bmRpbmdN
b2RlID0gWworICAgICJjZWlsIiwKKyAgICAiZmxvb3IiLAorICAgICJleHBhbmQiLAorICAgICJo
YWxmQ2VpbCIsCisgICAgImhhbGZFeHBhbmQiLAorICAgICJoYWxmRmxvb3IiLAorICAgICJoYWxm
VHJ1bmMiLAorICAgICJoYWxmRXZlbiIsCisgICAgInRydW5jIiwKK107CisKK2xldCBpbnZhbGlk
Um91bmRpbmdNb2RlID0gWworICAgICJjZWlsaW5nIiwKKyAgICAiZG93biIsCisgICAgIkRvd24i
LAorICAgICJmbG9vcmluZyIsCisgICAgImhhbGZEb3duIiwKKyAgICAiaGFsZlVwIiwKKyAgICAi
aGFsZnVwIiwKKyAgICAiaGFsZmV2ZW4iLAorICAgICJoYWxmZG93biIsCisgICAgImhhbGYtdXAi
LAorICAgICJoYWxmLWV2ZW4iLAorICAgICJoYWxmLWRvd24iLAorICAgICJ1cCIsCisgICAgIlVw
IiwKK107CisKK3ZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdNb2Rl
KSB7CisgICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3JvdW5k
aW5nTW9kZX0pOworICAgIHNob3VsZEJlKHJvdW5kaW5nTW9kZSwgbmYucmVzb2x2ZWRPcHRpb25z
KCkucm91bmRpbmdNb2RlKTsKK30pOworCitpbnZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2goZnVu
Y3Rpb24ocm91bmRpbmdNb2RlKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBs
ZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdNb2RlfSk7
IH0sIGBSYW5nZUVycm9yOiByb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgImNlaWwiLCAiZmxv
b3IiLCAiZXhwYW5kIiwgInRydW5jIiwgImhhbGZDZWlsIiwgImhhbGZGbG9vciIsICJoYWxmRXhw
YW5kIiwgImhhbGZUcnVuYyIsIG9yICJoYWxmRXZlbiJgKTsKK30pOworCisvLyBDaGVjayBkZWZh
dWx0IGlzICJoYWxmRXhwYW5kIgorc2hvdWxkQmUoImhhbGZFeHBhbmQiLCAobmV3IEludGwuTnVt
YmVyRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkucm91bmRpbmdNb2RlKSk7CitzaG91bGRCZSgi
aGFsZkV4cGFuZCIsIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisgICAgdW5kZWZpbmVkLCB7cm91
bmRpbmdNb2RlOiB1bmRlZmluZWR9KS5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpKTsK
KworLy8gQ2hlY2sgcm91bmRpbmdNb2RlIGlzIHJlYWQgb25jZSBhZnRlciByZWFkaW5nIHNpZ25E
aXNwbGF5CisKK2xldCByZWFkID0gW107CitsZXQgb3B0aW9ucyA9IHsKKyAgICBnZXQgc2lnbkRp
c3BsYXkoKSB7IHJlYWQucHVzaCgnc2lnbkRpc3BsYXknKTsgcmV0dXJuIHVuZGVmaW5lZDsgfSwK
KyAgICBnZXQgcm91bmRpbmdNb2RlKCkgeyByZWFkLnB1c2goJ3JvdW5kaW5nTW9kZScpOyByZXR1
cm4gdW5kZWZpbmVkOyB9LAorfTsKKworbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
b3B0aW9ucyk7CitzaG91bGRCZSgic2lnbkRpc3BsYXkscm91bmRpbmdNb2RlIiwgcmVhZC5qb2lu
KCIsIikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2ln
bi1kaXNwbGF5LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtc2lnbi1k
aXNwbGF5LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMWM4NTEzYWI4YTU2NzIwOGYwODE4MzUwZWU5ZGRj
M2Y2ODYzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC1zaWduLWRpc3BsYXktdjMuanMKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIw
MjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCisvLyBUZXN0IGRlZmF1bHQu
CitsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKTsKK3Nob3VsZEJlKCJhdXRvIiwgbmYu
cmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRpc3BsYXkpOworCituZiA9IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgiZW4iKTsKK3Nob3VsZEJlKCJhdXRvIiwgbmYucmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRp
c3BsYXkpOworCitjb25zdCB0ZXN0RGF0YSA9IFsKKyAgICBbImF1dG8iLCAgICAgICAgIi0xMjMi
LCAgIi0wIiwgICIwIiwgICIxMjMiXSwKKyAgICBbImFsd2F5cyIsICAgICAgIi0xMjMiLCAgIi0w
IiwgIiswIiwgIisxMjMiXSwKKyAgICBbIm5ldmVyIiwgICAgICAgIjEyMyIsICAgIjAiLCAgIjAi
LCAgIjEyMyJdLAorICAgIFsiZXhjZXB0WmVybyIsICAiLTEyMyIsICAiMCIsICAiMCIsICAiKzEy
MyJdLAorICAgIFsibmVnYXRpdmUiLCAgICAiLTEyMyIsICAiMCIsICAiMCIsICAiMTIzIl0sCitd
OworCitmb3IgKGNvbnN0IFtzaWduRGlzcGxheSwgbmVnLCBuZWdaZXJvLCB6ZXJvLCBwb3NdIG9m
IHRlc3REYXRhKSB7CisgICAgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwge3NpZ25E
aXNwbGF5fSk7CisgICAgc2hvdWxkQmUoc2lnbkRpc3BsYXksIG5mLnJlc29sdmVkT3B0aW9ucygp
LnNpZ25EaXNwbGF5KTsKKyAgICBzaG91bGRCZShuZWcsIG5mLmZvcm1hdCgtMTIzKSk7CisgICAg
aWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgIHNob3VsZEJlKG5lZ1plcm8sIG5m
LmZvcm1hdCgtMCkpOworICAgIHNob3VsZEJlKHplcm8sIG5mLmZvcm1hdCgwKSk7CisgICAgc2hv
dWxkQmUocG9zLCBuZi5mb3JtYXQoMTIzKSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktcmVzb2x2ZWQtb3B0aW9u
cy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8t
ZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MTM1NTEzNmEzOTI0
NWU2OTczYjE2NDIyYWJlMjBmMDNjYjZhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktcmVzb2x2ZWQtb3B0
aW9ucy12My5qcwpAQCAtMCwwICsxLDQ1IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCBkZWZhdWx0Rm10ID0gbmV3IEludGwuTnVt
YmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1G
cmFjdGlvbkRpZ2l0czogMiB9KTsKK2xldCBhdXRvRm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0
KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRp
Z2l0czogMiwKKyAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ2F1dG8nfSk7CitsZXQgc3Ry
aXBJZkludGVnZXJGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmlt
dW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICB0
cmFpbGluZ1plcm9EaXNwbGF5OiAnc3RyaXBJZkludGVnZXInfSk7CisKK3Nob3VsZEJlKCJhdXRv
IiwgZGVmYXVsdEZtdC5yZXNvbHZlZE9wdGlvbnMoKS50cmFpbGluZ1plcm9EaXNwbGF5KTsKK3No
b3VsZEJlKCJhdXRvIiwgYXV0b0ZtdC5yZXNvbHZlZE9wdGlvbnMoKS50cmFpbGluZ1plcm9EaXNw
bGF5KTsKK3Nob3VsZEJlKCJzdHJpcElmSW50ZWdlciIsCisgICAgc3RyaXBJZkludGVnZXJGbXQu
cmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxheSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXkt
djMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODVmMmIxZDFjYTJjODc3ZWU4YWNiZTgxZDU5MDI1ODgxNmM5NmIw
MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRy
YWlsaW5nLXplcm8tZGlzcGxheS12My5qcwpAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQg
MjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAg
ICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCBkZWZhdWx0Rm10
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdp
dHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTsKK2xldCBhdXRvRm10ID0gbmV3IElu
dGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogJ2F1
dG8nfSk7CitsZXQgc3RyaXBJZkludGVnZXJGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVu
IiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRz
OiAyLAorICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnc3RyaXBJZkludGVnZXInfSk7CisK
K3Nob3VsZEJlKCIzLjE0IiwgZGVmYXVsdEZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgi
My4xNCIsIGF1dG9GbXQuZm9ybWF0KDMuMTQxMSkpOworc2hvdWxkQmUoIjMuMTQiLCBzdHJpcElm
SW50ZWdlckZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRGbXQu
Zm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDMuMDAx
NDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIsIHN0
cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgzLjAwMTQxMSkpOworZWxzZQorICAgIHNob3VsZEJlKCIz
LjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4w
MCIsIGRlZmF1bHRGbXQuZm9ybWF0KDIuOTk5NDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1dG9G
bXQuZm9ybWF0KDIuOTk5NDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICBz
aG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgyLjk5OTQxMSkpOworZWxzZQor
ICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDIuOTk5NDExKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vncm91cGlu
Zy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4YzdmYWM4OTYwZWI5NjJlM2I2ZDlmMzM0OGIzYWJmMGY2YzA4ZWIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC11c2Vn
cm91cGluZy12My5qcwpAQCAtMCwwICsxLDE1NSBAQAorLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworbGV0IHZhbGlkVXNlR3JvdXBp
bmcgPSBbCisgICAgIm1pbjIiLAorICAgICJhdXRvIiwKKyAgICAiYWx3YXlzIiwKKyAgICBmYWxz
ZSwKK107CisKK2xldCBpbnZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1pbi0yIiwKKyAgICAi
dHJ1ZSIsCitdOworCit2YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rpb24odXNlR3JvdXBp
bmcpIHsKKyAgICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNl
R3JvdXBpbmd9KTsKKyAgICBzaG91bGRCZSh1c2VHcm91cGluZywgbmYucmVzb2x2ZWRPcHRpb25z
KCkudXNlR3JvdXBpbmcpOworfSk7CisKK2ludmFsaWRVc2VHcm91cGluZy5mb3JFYWNoKGZ1bmN0
aW9uKHVzZUdyb3VwaW5nKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQg
bmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmd9KTsgfSwg
YFJhbmdlRXJyb3I6IHVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCAibWlu
MiIsICJhdXRvIiwgb3IgImFsd2F5cyJgKTsKK30pOworCisvLyB1c2VHcm91cGluZzogdW5kZWZp
bmVkIGdldCAiYXV0byIKK3Nob3VsZEJlKCJhdXRvIiwKKyAgICAobmV3IEludGwuTnVtYmVyRm9y
bWF0KCkpLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKK3Nob3VsZEJlKCJhdXRvIiwK
KyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nOiB1bmRl
ZmluZWR9KSkKKyAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworCisvLyB1c2VH
cm91cGluZzogdHJ1ZSBnZXQgImFsd2F5cyIKK3Nob3VsZEJlKCJhbHdheXMiLAorICAgIChuZXcg
SW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHRydWV9KSkKKyAgICAu
cmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworCisvLyB1c2VHcm91cGluZzogZmFsc2Ug
Z2V0IGZhbHNlCisvLyB1c2VHcm91cGluZzogIiIgZ2V0IGZhbHNlCitzaG91bGRCZShmYWxzZSwK
KyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nOiBmYWxz
ZX0pKQorICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CitzaG91bGRCZShmYWxz
ZSwKKyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwge3VzZUdyb3VwaW5nOiAi
In0pKQorICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CisKKy8vIFNvbWUgbG9j
YWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzCitsZXQgbWdkMSA9IFsiZW4i
XTsKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRzeyIy
In0KK2xldCBtZ2QyID0gWyJlcyIsICJwbCIsICJsdiIsICJldCIsICJiZyJdOworbGV0IGFsbCA9
IG1nZDEuY29uY2F0KG1nZDIpOworCisvLyBDaGVjayAiYWx3YXlzIgorYWxsLmZvckVhY2goZnVu
Y3Rpb24obG9jYWxlKSB7CisgICAgbGV0IG9mZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2Nh
bGUsIHt1c2VHcm91cGluZzogZmFsc2V9KTsKKyAgICBsZXQgbXNnID0gImxvY2FsZTogIiArIGxv
Y2FsZSArICIgdXNlR3JvdXBpbmc6IGZhbHNlIjsKKyAgICAvLyBJbiB1c2VHcm91cGluZzogZmFs
c2UsIG5vIGdyb3VwaW5nLgorICAgIHNob3VsZEJlKDMsIG9mZi5mb3JtYXQoMTIzKS5sZW5ndGgs
IG1zZyk7CisgICAgc2hvdWxkQmUoNCwgb2ZmLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7Cisg
ICAgc2hvdWxkQmUoNSwgb2ZmLmZvcm1hdCgxMjM0NSkubGVuZ3RoLCBtc2cpOworICAgIHNob3Vs
ZEJlKDYsIG9mZi5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNywg
b2ZmLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsKKworLy8gQ2hlY2sgZmFsc2UK
K2FsbC5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICAgIGxldCBhbHdheXMgPSBuZXcgSW50
bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJhbHdheXMifSk7CisgICAgbGV0
IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5nOiAnYWx3YXlzJyI7Cisg
ICAgc2hvdWxkQmUoMywgYWx3YXlzLmZvcm1hdCgxMjMpLmxlbmd0aCk7CisgICAgLy8gSW4gdXNl
R3JvdXBpbmc6ICJhbHdheXMiLCBoYXMgZ3JvdXBpbmcgd2hlbiBtb3JlIHRoYW4gMyBkaWdpdHMu
LgorICAgIHNob3VsZEJlKDQgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsK
KyAgICBzaG91bGRCZSg1ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0NSkubGVuZ3RoLCBtc2cpOwor
ICAgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOwor
ICAgIHNob3VsZEJlKDcgKyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsK
K30pOworCisvLyBDaGVjayAibWluMiIKK2FsbC5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgewor
ICAgIGxldCBhbHdheXMgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBp
bmc6ICJtaW4yIn0pOworICAgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsgIiB1c2VH
cm91cGluZzogJ21pbjInIjsKKyAgICBzaG91bGRCZSgzLCBhbHdheXMuZm9ybWF0KDEyMykubGVu
Z3RoKTsKKyAgICAvLyBJbiB1c2VHcm91cGluZzogIm1pbjIiLCBubyBncm91cGluZyBmb3IgNCBk
aWdpdHMgYnV0IGhhcyBncm91cGluZworICAgIC8vIHdoZW4gbW9yZSB0aGFuIDQgZGlnaXRzLi4K
KyAgICBzaG91bGRCZSg0LCBhbHdheXMuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgICBz
aG91bGRCZSg1ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0NSkubGVuZ3RoLCBtc2cpOworICAgIHNo
b3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICAgIHNo
b3VsZEJlKDcgKyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwor
CisvLyBDaGVjayAiYXV0byIKK21nZDEuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgICBs
ZXQgYXV0byA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImF1
dG8ifSk7CisgICAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5n
OiAnYXV0byciOworICAgIHNob3VsZEJlKDMsIGF1dG8uZm9ybWF0KDEyMykubGVuZ3RoLCBtc2cp
OworICAgIHNob3VsZEJlKDQgKyAxLCBhdXRvLmZvcm1hdCgxMjM0KS5sZW5ndGgsIG1zZyk7Cisg
ICAgc2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgICAg
c2hvdWxkQmUoNiArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1NikubGVuZ3RoLCBtc2cpOworICAgIHNo
b3VsZEJlKDcgKyAyLCBhdXRvLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsKK21n
ZDIuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgICBsZXQgYXV0byA9IG5ldyBJbnRsLk51
bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImF1dG8ifSk7CisgICAgbGV0IG1zZyA9
ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5nOiAnYXV0byciOworICAgIHNob3Vs
ZEJlKDMsIGF1dG8uZm9ybWF0KDEyMykubGVuZ3RoLCBtc2cpOworICAgIC8vIEluIHVzZUdyb3Vw
aW5nOiAiYXV0byIsIHNpbmNlIHRoZXNlIGxvY2FsZXMgaGFzCisgICAgLy8gbWluaW11bUdyb3Vw
aW5nRGlnaXRzeyIyIn0sIG5vIGdyb3VwaW5nIGZvciA0IGRpZ2l0cyBidXQgaGFzIGdyb3VwaW5n
CisgICAgLy8gd2hlbiBtb3JlIHRoYW4gNCBkaWdpdHMuLgorICAgIHNob3VsZEJlKDQsIGF1dG8u
Zm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg1ICsgMSwgYXV0by5mb3Jt
YXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg2ICsgMSwgYXV0by5mb3JtYXQo
MTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNyArIDIsIGF1dG8uZm9ybWF0KDEy
MzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpp
bmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThhNWU1MzEwMjY0YmM1Li4zYzMwMWY1Nzhh
NWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1YTY1NWQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZv
cm1hdC5qcwpAQCAtNTMsOSArNTMsMTMgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1i
ZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICAgICAgICAgIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMywKICAgICAgICAgICAgIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogdW5k
ZWZpbmVkLAogICAgICAgICAgICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQs
Ci0gICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAgICAgICAgIHVzZUdyb3VwaW5n
OiAiYXV0byIsCiAgICAgICAgICAgICBub3RhdGlvbjogInN0YW5kYXJkIiwKLSAgICAgICAgICAg
IHNpZ25EaXNwbGF5OiAiYXV0byIKKyAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIsCisg
ICAgICAgICAgICByb3VuZGluZ01vZGU6ICJoYWxmRXhwYW5kIiwKKyAgICAgICAgICAgIHJvdW5k
aW5nSW5jcmVtZW50OiAxLAorICAgICAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTogImF1dG8i
LAorICAgICAgICAgICAgcm91bmRpbmdQcmlvcml0eTogImF1dG8iLAogICAgICAgICB9OwogICAg
ICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZmZXJlbmNlKTsKICAgICAgICAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsKQEAgLTE4NCw5ICsxODgsOSBA
QCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJl
bmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge21heGlt
dW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7CiAKIC8vIFRoZSBvcHRpb24g
dXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNob3VsZEJlKHRlc3ROdW1iZXJG
b3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9j
YWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVt
YmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogdHJ1ZX0pLCBb
e2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdheXMifV0pLCB0cnVlKTsKIHNob3VsZEJl
KHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiBm
YWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6IGZhbHNlfV0pLCB0cnVlKTsKLXNo
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3Vw
aW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1
ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1
c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogIm1pbjIi
fV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHsg
Z2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9KSwgRXJyb3IpOwogCiAv
LyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCkBA
IC00MzUsNyArNDM5LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0aW9ucyA9IGRlZmF1bHRORm9y
bWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRpb25zLmxvY2FsZTsgCi0gICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51bWJlcmluZ1N5c3RlbSI6Imxh
dG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZy
YWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0
cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIn0nKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgYHsibnVtYmVyaW5nU3lzdGVtIjoibGF0
biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJh
Y3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOiJh
dXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNwbGF5IjoiYXV0byIsInJvdW5kaW5n
TW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3JlbWVudCI6MSwidHJhaWxpbmdaZXJvRGlz
cGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5IjoiYXV0byJ9YCk7CiB9CiAKIC8vIExlZ2Fj
eSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2ZkZTc4ZWFiMTI1MzI3
ZGQwZDMyOTZiZDI2ZWI3YWQxZGZlY2NiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpAQCAtMCwwICsxLDM2IEBACisvLyBD
b3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitpZiAoSW50bC5QbHVyYWxSdWxlcy5w
cm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAgICBjb25zdCBwbCA9IG5ldyBJbnRsLlBsdXJhbFJ1
bGVzKCJzbCIpOworICAgIHNob3VsZEJlKCJmZXciLCBwbC5zZWxlY3RSYW5nZSgxMDIsIDIwMSkp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDk2MmQ1MjQ2MjUyNWFmYmIyOTZkOWFjZmQ2ZDhhMGEx
NDRmMjBiMzQuLjI4ZTQ3MTIxNWMwYjJlNWY3M2VlMTlhNTJmYThkYzU3Y2ZlOTY4OWYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKQEAgLTEwMSw2ICsxMDEsMTIgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vdW5p
Y29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIxMzY3CiAgICAgLSB0ZXN0L2ludGw0
MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS15ZXMt
dG8tdHJ1ZS5qcwogCisgICAgIyBJbnRsLk51bWJlckZvcm1hdCB2MyBjaGFuZ2VzIHRoZSBiZWhh
dmlvci4KKyAgICAtIHRlc3QvaW50bDQwMi9QbHVyYWxSdWxlcy9wcm90b3R5cGUvcmVzb2x2ZWRP
cHRpb25zL29yZGVyLmpzCisgICAgLSB0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlw
ZS9yZXNvbHZlZE9wdGlvbnMvYmFzaWMuanMKKyAgICAtIHRlc3QvaW50bDQwMi9OdW1iZXJGb3Jt
YXQvcHJvdG90eXBlL3Jlc29sdmVkT3B0aW9ucy9vcmRlci5qcworICAgIC0gdGVzdC9pbnRsNDAy
L051bWJlckZvcm1hdC90ZXN0LW9wdGlvbi11c2VHcm91cGluZy5qcworCiAgICAgIyBGYWlsaW5n
IGJlY2F1c2Ugd2UgYXJlIGJ1aWxkaW5nIFdlYktpdCB3aXRoIHZlcnkgb2xkIElDVSBoZWFkZXJz
CiAgICAgLSB0ZXN0L2ludGw0MDIvTGlzdEZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9s
b2NhbGVzLWludmFsaWQuanMKICAgICAtIHRlc3QvaW50bDQwMi9MaXN0Rm9ybWF0L2NvbnN0cnVj
dG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442549</attachid>
            <date>2021-10-26 17:52:09 -0700</date>
            <delta_ts>2021-10-26 19:46:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026175208.patch</filename>
            <type>text/plain</type>
            <size>151557</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODlhZGI4ZTIzNzU1YzcxNjQwZjE1YzlhOWViMmRlYTY5NWNmMzFkLi44YWZjYzA5NGQ5NTZkZDg1
MzZmNmRiMjU3Mjk4ZGZmZGMwZTM2NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgcGFydCBvZiBJbnRsLk51bWJlckZvcm1hdCB2MyBwcm9wb3NhbFsxXS4KKyAgICAgICAg
SXQgYWRkcyAoMSkgc2V2ZXJhbCBuZXcgb3B0aW9ucyB0byBJbnRsLk51bWJlckZvcm1hdCwgKDIp
IGFkZHMKKyAgICAgICAgZm9ybWF0UmFuZ2UgYW5kIGZvcm1hdFJhbmdlVG9QYXJ0cyB0byBJbnRs
Lk51bWJlckZvcm1hdCBhbmQgSW50bC5QbHVyYWxSdWxlcywKKyAgICAgICAgYW5kICgzKSBhZGRz
IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlIHN1cHBvcnQsIHdoaWNoIGFsbG93cyBzb21lIG9mIElu
dGwuTnVtYmVyRm9ybWF0CisgICAgICAgIGZ1bmN0aW9ucyB0byB0YWtlICJzdHJpbmciIGRlY2lt
YWwgZm9ybS4KKworICAgICAgICBXZSBjYW5ub3QgaW1wbGVtZW50IHNvbWUgZmVhdHVyZXMgYmVj
YXVzZSBpdCByZXF1aXJlcyBzdXBlciBuZXcgSUNVLgorCisgICAgICAgICAgICAtIHRyYWlsaW5n
WmVyb0Rpc3BsYXkgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gaGFsZkNlaWwgLyBo
YWxmRmxvb3IgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gc2lnbkRpc3BsYXk6ICJu
ZWdhdGl2ZSIgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gZm9ybWF0UmFuZ2VUb1Bh
cnRzIChyZXF1aXJlcyBJQ1UgNzApCisKKyAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20v
dGMzOS9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12MworCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAg
IChKU0M6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpT
Qzo6VU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpJbnRsTWF0aGVtYXRpY2FsVmFsdWUpOgorICAgICAgICAoSlND
OjpJbnRsTWF0aGVtYXRpY2FsVmFsdWU6OmVuc3VyZU5vbkRvdWJsZSk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxN
YXRoZW1hdGljYWxWYWx1ZTo6dHJ5R2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpnZXRTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnNldE51bWJlckZv
cm1hdERpZ2l0T3B0aW9ucyk6CisgICAgICAgIChKU0M6OmFwcGVuZE51bWJlckZvcm1hdERpZ2l0
T3B0aW9uc1RvU2tlbGV0b24pOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFs
UnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
Ojppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
c2VsZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5n
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50
Ojp0cnlFeHRyYWN0RG91YmxlKToKKwogMjAyMS0xMC0yNiAgWGFuIEzDs3BleiAgPHhhbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIEltcHJvdmUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0
aW9ucyBmb3IgTGludXgvRUxGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVjNTZj
MTBlYWEwZTRmMDZhMmUzMGUzYWFiNjQ2YTBmMGRiYjY4YzguLjY4NTM0NzQ2ZDBhODgzZWRkNGI0
NTBkNThlZTg1ODVhZTdkMzg4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
ODQ1LDYgKzE4NDUsNyBAQAogCQlFMzA3MTc4QzI0Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2Fs
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90b3R5cGUuaCAqLzsg
fTsKIAkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkMy
NDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlFMzA3
MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExvY2FsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIElu
dGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcyNzI1NTk0MTAwNTNCNjAxIC8qIEludGxQbHVy
YWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCAqLzsgfTsK
IAkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMEU4QTRF
MjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1MDI2REUyRTQ4MDBE
QTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICovOyB9OwogCQlFMzBFOEE1NzI2REUyRTQ4MDBE
QTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1MTI2REUyRTQ4MDBEQTQ5MTUgLyog
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggKi87IH07CkBAIC0xOTE2LDYgKzE5MTcsNyBA
QAogCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8q
IEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc0MTY2RTI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc0MTY2RDI2
OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CiAJCUUz
NzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJF
ODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovOyB9OworCQlFMzc4
REM4RDI3Mjc2Mjk0MDA0MjdCMEIgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4
MzUwMEEyMzkwRDkzQjAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBX
YXNtR2xvYmFsLmggKi87IH07CiAJCUUzODUwQjE1MjI2RUQ2NDEwMDlBQkY5QyAvKiBERkdNaW5p
ZmllZElESW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmgg
Ki87IH07CkBAIC0xMTgzMiw2ICsxMTgzNCw4IEBACiAJCQkJNUM0MTk2NjIyMjcwRTAwMDAwNDdC
N0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNjY0NDFFMjU0NDA5QjMwMDAxODc2RiAvKiBJ
bnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc4REM4RDI3Mjc2Mjk0MDA0
MjdCMEIgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzA4NzNF
NzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEzRUU4NTQzMjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNEYXRlTWF0aC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBkZDhjYjYyNzI0MWJlODhjZWVmMDc0NTljODVlZjNjOGE5ZjhjODM3Li44NjRhZDNhZDcz
MGZiZjQ0NzFhM2MzMmQ3MjZjYTkzOWFkZTBiYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC04MzUsMTEgKzgzNSwxMSBAQCBydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBl
LmNwcAogcnVudGltZS9JbnRsTG9jYWxlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCi1ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCitydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIEBuby11bmlmeSAvLyBD
b25maW5lIFVfSElERV9EUkFGVF9BUEkncyBlZmZlY3QgaW4gdGhpcyBmaWxlLgogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxPYmplY3QuY3BwCi1ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5jcHAKK3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBAbm8tdW5pZnkgLy8gQ29uZmlu
ZSBVX0hJREVfRFJBRlRfQVBJJ3MgZWZmZWN0IHRvIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCmluZGV4IDlkYzBmZTJi
NjA0N2ZiMmU5ODU5MDVmMmRlNjMxM2MyN2QyZDA4ODQuLjk3YjIzZTVlYmU1MjliZTY0OTcxYTcz
Y2M3ZTVjNjU2OGJmNGI4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQmln
SW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgotI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2FzdC5oIgpAQCAtMTMyLDEzICsxMzIsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlzQmlnSW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBKU0JpZ0lu
dCogdGhpc1ZhbHVlID0gdG9UaGlzQmlnSW50VmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgYXV0byogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKICAgICBudW1iZXJGb3JtYXQtPmlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHZhbHVlID0g
dG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2
YWx1ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCBudW1iZXIu
dmFsdWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgV1RGTW92ZSh2YWx1ZSkpKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggNzgyOGQwMDhhODUzNDYxZTQ4ZTM2ZDJmYmVhNjFjNzA5NTc2ZGRhZi4uNGNlZDUyNTcwY2Q5
NWU0NjU0MGJkYzA4NTY3ZTgwYjliN2M5MTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMTcsMTAgKzIxNywxMiBAQAog
ICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyb3VuZGluZ0luY3JlbWVudCkgXAogICAg
IG1hY3JvKHJvdW5kaW5nTW9kZSkgXAorICAgIG1hY3JvKHJvdW5kaW5nUHJpb3JpdHkpIFwKICAg
ICBtYWNybyhzY3JpcHQpIFwKICAgICBtYWNybyhzZWNvbmQpIFwKICAgICBtYWNybyhzZWNvbmRz
KSBcCiAgICAgbWFjcm8oc2VnbWVudCkgXAorICAgIG1hY3JvKHNlbGVjdFJhbmdlKSBcCiAgICAg
bWFjcm8oc2Vuc2l0aXZpdHkpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBc
CkBAIC0yNDksNiArMjUxLDcgQEAKICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAogICAgIG1h
Y3JvKHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNybyh0cmFp
bGluZ1plcm9EaXNwbGF5KSBcCiAgICAgbWFjcm8odHlwZSkgXAogICAgIG1hY3JvKHVpZCkgXAog
ICAgIG1hY3JvKHVuaWNvZGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggZmMzMjM3MDMyMDIyYjRjNmQ2N2RkODE1NTll
YzMzNWI1NmJkMGRmZi4uNThhODlkYzRmMWQwOWVkZGM0MGY1NWI2MTY5YzFiMjNjMTIxMzIyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKQEAgLTM1LDggKzM1LDIwIEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSA8d3RmL1JhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBl
cnMuaD4KIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRfQVBJ
CisjZW5kaWYKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5p
Y29kZS91bnVtYmVyZm9ybWF0dGVyLmg+CisjZW5kaWYKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9S
QU5HRV9GT1JNQVRURVIpCisjaW5jbHVkZSA8dW5pY29kZS91bnVtYmVycmFuZ2Vmb3JtYXR0ZXIu
aD4KKyNlbmRpZgorI2RlZmluZSBVX0hJREVfRFJBRlRfQVBJIDEKKwogbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxOdW1iZXJGb3JtYXQpIH07CkBAIC00NSw2ICs1NywyMiBAQCBuYW1lc3BhY2UgSW50bE51bWJl
ckZvcm1hdEludGVybmFsIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCit2b2lkIFVOdW1iZXJGb3Jt
YXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXR0ZXIqIGZvcm1hdHRlcikKK3sK
KyAgICBpZiAoZm9ybWF0dGVyKQorICAgICAgICB1bnVtZl9jbG9zZShmb3JtYXR0ZXIpOworfQor
I2VuZGlmCisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCit2b2lkIFVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0
dGVyKiBmb3JtYXR0ZXIpCit7CisgICAgaWYgKGZvcm1hdHRlcikKKyAgICAgICAgdW51bXJmX2Ns
b3NlKGZvcm1hdHRlcik7Cit9CisjZW5kaWYKKwogc3RydWN0IEludGxOdW1iZXJGb3JtYXRGaWVs
ZCB7CiAgICAgaW50MzJfdCB0eXBlOwogICAgIHNpemVfdCBzaXplOwpAQCAtMjE0LDYgKzI0Miw1
NiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZQogICAgIHJldHVybiBXZWxsRm9ybWVkVW5pdChu
dW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1ZSgpKTsKIH0KIAorc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxk
LCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAg
Y2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6TmFOOgorICAgICAgICAg
ICAgcmV0dXJuICJuYW4iX3M7CisgICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpO
dW1iZXJUeXBlOjpJbmZpbml0eToKKyAgICAgICAgICAgIHJldHVybiAiaW5maW5pdHkiX3M7Cisg
ICAgICAgIGNhc2UgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpJbnRlZ2VyOgor
ICAgICAgICAgICAgcmV0dXJuICJpbnRlZ2VyIl9zOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gInVua25vd24iX3M7CisgICAgY2FzZSBV
TlVNX0ZSQUNUSU9OX0ZJRUxEOgorICAgICAgICByZXR1cm4gImZyYWN0aW9uIl9zOworICAgIGNh
c2UgVU5VTV9ERUNJTUFMX1NFUEFSQVRPUl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJkZWNpbWFs
Il9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TWU1CT0xfRklFTEQ6CisgICAgICAgIHJldHVy
biAiZXhwb25lbnRTZXBhcmF0b3IiX3M7CisgICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklF
TEQ6CisgICAgICAgIHJldHVybiAiZXhwb25lbnRNaW51c1NpZ24iX3M7CisgICAgY2FzZSBVTlVN
X0VYUE9ORU5UX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKKyAg
ICBjYXNlIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX0ZJRUxEOgorICAgICAgICByZXR1cm4gImdy
b3VwIl9zOworICAgIGNhc2UgVU5VTV9DVVJSRU5DWV9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJj
dXJyZW5jeSJfczsKKyAgICBjYXNlIFVOVU1fUEVSQ0VOVF9GSUVMRDoKKyAgICAgICAgLy8gSWYg
dGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ugc2hvdWxkIHJlcG9ydCBhcyB1bml0LgorICAgICAgICAv
LyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVTLmpzCisgICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50
bE51bWJlckZvcm1hdDo6U3R5bGU6OlVuaXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7
CisgICAgY2FzZSBVTlVNX1NJR05fRklFTEQ6CisgICAgICAgIHJldHVybiBzaWduID8gIm1pbnVz
U2lnbiJfcyA6ICJwbHVzU2lnbiJfczsKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIp
CisgICAgY2FzZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJ1bml0
Il9zOworICAgIGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgorICAgICAgICByZXR1cm4gImNvbXBh
Y3QiX3M7CisjZW5kaWYKKyAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0
aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgor
ICAgIC8vIElmIHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24g
cGFydCB0eXBlcywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgorICAgIGNhc2UgVU5VTV9Q
RVJNSUxMX0ZJRUxEOgorICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJG
b3JtYXRGaWVsZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFuICJ1bmtub3duIiBw
YXJ0LgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAidW5rbm93biJfczsKKyAgICB9Cisg
ICAgcmV0dXJuICJ1bmtub3duIl9zOworfQorCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWE0MDIvI3NlYy1pbml0aWFsaXplbnVtYmVyZm9ybWF0CiB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKQEAgLTMwOSwxNCArMzg3LDUz
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRp
b25zKGdsb2JhbE9iamVjdCwgdGhpcywgb3B0aW9ucywgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVm
YXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgbV9ub3RhdGlvbik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIG1fcm91bmRpbmdJbmNyZW1l
bnQgPSBpbnRsTnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIDEsIDUwMDAsIDEpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25l
ZCByb3VuZGluZ0luY3JlbWVudENhbmRpZGF0ZXNbXSA9IHsKKyAgICAgICAgMSwgMiwgNSwgMTAs
IDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAyNTAsIDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMAor
ICAgIH07CisgICAgYm9vbCBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnQgPSB0cnVlOworICAgIGZv
ciAodW5zaWduZWQgY2FuZGlkYXRlIDogcm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzKSB7Cisg
ICAgICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ID09IGNhbmRpZGF0ZSkgeworICAgICAgICAg
ICAgaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaW52YWxpZFJvdW5kaW5nSW5jcmVtZW50KSB7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmdJbmNy
ZW1lbnQgbXVzdCBiZSBvbmUgb2YgMSwgMiwgNSwgMTAsIDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAy
NTAsIDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMCJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0gMSAmJiBtX3JvdW5kaW5nVHlwZSAh
PSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cykgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nIHR5cGUgaXMgbm90IGZyYWN0aW9u
LWRpZ2l0cyB3aGlsZSByb3VuZGluZ0luY3JlbWVudCBpcyBzcGVjaWZpZWQiX3MpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFpbGluZ1plcm9EaXNwbGF5ID0gaW50bE9wdGlv
bjxUcmFpbGluZ1plcm9EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnRyYWlsaW5nWmVyb0Rpc3BsYXksIHsgeyAiYXV0byJfcywgVHJhaWxpbmdaZXJvRGlz
cGxheTo6QXV0byB9LCB7ICJzdHJpcElmSW50ZWdlciJfcywgVHJhaWxpbmdaZXJvRGlzcGxheTo6
U3RyaXBJZkludGVnZXIgfSB9LCAidHJhaWxpbmdaZXJvRGlzcGxheSBtdXN0IGJlIGVpdGhlciBc
ImF1dG9cIiBvciBcInN0cmlwSWZJbnRlZ2VyXCIiX3MsIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1
dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKICAgICBtX2Nv
bXBhY3REaXNwbGF5ID0gaW50bE9wdGlvbjxDb21wYWN0RGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwgeyB7
ICJzaG9ydCJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0IH0sIHsgImxvbmciX3MsIENvbXBhY3RE
aXNwbGF5OjpMb25nIH0gfSwgImNvbXBhY3REaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwic2hvcnRc
IiBvciBcImxvbmdcIiJfcywgQ29tcGFjdERpc3BsYXk6OlNob3J0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBp
bnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKKyAgICBVc2VHcm91cGluZyBkZWZhdWx0VXNlR3Jv
dXBpbmcgPSBVc2VHcm91cGluZzo6QXV0bzsKKyAgICBpZiAobV9ub3RhdGlvbiA9PSBJbnRsTm90
YXRpb246OkNvbXBhY3QpCisgICAgICAgIGRlZmF1bHRVc2VHcm91cGluZyA9IFVzZUdyb3VwaW5n
OjpNaW4yOworCisgICAgbV91c2VHcm91cGluZyA9IGludGxTdHJpbmdPckJvb2xlYW5PcHRpb248
VXNlR3JvdXBpbmc+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVzZUdyb3VwaW5nIiksIFVzZUdyb3VwaW5nOjpBbHdheXMsIFVzZUdyb3VwaW5nOjpG
YWxzZSwgeyB7ICJtaW4yIl9zLCBVc2VHcm91cGluZzo6TWluMiB9LCB7ICJhdXRvIl9zLCBVc2VH
cm91cGluZzo6QXV0byB9LCB7ICJhbHdheXMiX3MsIFVzZUdyb3VwaW5nOjpBbHdheXMgfSB9LCAi
dXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsIFwibWluMlwiLCBcImF1dG9c
Iiwgb3IgXCJhbHdheXNcIiJfcywgZGVmYXVsdFVzZUdyb3VwaW5nKTsKKworICAgIG1fc2lnbkRp
c3BsYXkgPSBpbnRsT3B0aW9uPFNpZ25EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCB7IHsgImF1dG8iX3MsIFNp
Z25EaXNwbGF5OjpBdXRvIH0sIHsgIm5ldmVyIl9zLCBTaWduRGlzcGxheTo6TmV2ZXIgfSwgeyAi
YWx3YXlzIl9zLCBTaWduRGlzcGxheTo6QWx3YXlzIH0sIHsgImV4Y2VwdFplcm8iX3MsIFNpZ25E
aXNwbGF5OjpFeGNlcHRaZXJvIH0sIHsgIm5lZ2F0aXZlIl9zLCBTaWduRGlzcGxheTo6TmVnYXRp
dmUgfSB9LCAic2lnbkRpc3BsYXkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibmV2ZXJcIiwg
XCJhbHdheXNcIiwgXCJleGNlcHRaZXJvXCIsIG9yIFwibmVnYXRpdmVcIiJfcywgU2lnbkRpc3Bs
YXk6OkF1dG8pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAg
bV91c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nICE9IFRyaVN0YXRlOjpGYWxzZTsKIAotICAgIG1f
c2lnbkRpc3BsYXkgPSBpbnRsT3B0aW9uPFNpZ25EaXNwbGF5PihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWduRGlzcGxheSIpLCB7IHsgImF1dG8i
X3MsIFNpZ25EaXNwbGF5OjpBdXRvIH0sIHsgIm5ldmVyIl9zLCBTaWduRGlzcGxheTo6TmV2ZXIg
fSwgeyAiYWx3YXlzIl9zLCBTaWduRGlzcGxheTo6QWx3YXlzIH0sIHsgImV4Y2VwdFplcm8iX3Ms
IFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVy
IFwiYXV0b1wiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCIsIG9yIFwiZXhjZXB0WmVyb1wiIl9zLCBT
aWduRGlzcGxheTo6QXV0byk7CisgICAgbV9yb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5k
aW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGlu
Z01vZGUsIHsKKyAgICAgICAgICAgIHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LAor
ICAgICAgICAgICAgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwKKyAgICAgICAg
ICAgIHsgImV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpFeHBhbmQgfSwKKyAgICAgICAgICAgIHsg
InRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sCisgICAgICAgICAgICB7ICJoYWxmQ2Vp
bCJfcywgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbCB9LAorICAgICAgICAgICAgeyAiaGFsZkZsb29y
Il9zLCBSb3VuZGluZ01vZGU6OkhhbGZGbG9vciB9LAorICAgICAgICAgICAgeyAiaGFsZkV4cGFu
ZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0sCisgICAgICAgICAgICB7ICJoYWxmVHJ1
bmMiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZlRydW5jIH0sCisgICAgICAgICAgICB7ICJoYWxmRXZl
biJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXZlbiB9CisgICAgICAgIH0sICJyb3VuZGluZ01vZGUg
bXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJleHBhbmRcIiwgXCJ0cnVuY1wi
LCBcImhhbGZDZWlsXCIsIFwiaGFsZkZsb29yXCIsIFwiaGFsZkV4cGFuZFwiLCBcImhhbGZUcnVu
Y1wiLCBvciBcImhhbGZFdmVuXCIiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIENTdHJpbmcgZGF0YUxv
Y2FsZVdpdGhFeHRlbnNpb25zID0gbWFrZVN0cmluZyhyZXNvbHZlZC5kYXRhTG9jYWxlLCAiLXUt
bnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pLnV0ZjgoKTsKQEAgLTMyOSw3ICs0NDYsNDggQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3Nr
ZWxldG9ucy5tZAogCiAgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7Ci0gICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICBzd2l0
Y2ggKG1fcm91bmRpbmdNb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtY2VpbGluZyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtZmxvb3IiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS11cCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJv
dW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5k
aW5nLW1vZGUtZG93biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
SGFsZkNlaWw6IHsKKyAgICAgICAgLy8gT25seSBJQ1U2OX4gc3VwcG9ydHMgaGFsZi1jZWlsaW5n
LiBJZ25vcmUgdGhpcyBvcHRpb24gaWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0Lgor
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9lOGRm
ZWE5YmI2YmIyNzU5NjczMTE3M2IzNTI3NTllNDRhZDA2YjIxCisgICAgICAgIGlmIChXVEY6OklD
VTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtY2VpbGluZyIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsgLy8g
RGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJvdW5kaW5n
TW9kZTo6SGFsZkZsb29yOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYt
Y2VpbC4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBp
dC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQv
ZThkZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAoV1RG
OjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWZsb29yIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOyAv
LyBEZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3Vu
ZGluZy1tb2RlLWhhbGYtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkhhbGZUcnVuYzoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmct
bW9kZS1oYWxmLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkhhbGZFdmVuOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2Rl
LWhhbGYtZXZlbiIpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBzd2l0Y2ggKG1fc3R5
bGUpIHsKICAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgpAQCAtMzg2LDMyICs1NDQsMTggQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB9CiAgICAgfQogCi0gICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13aWR0aAotICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+
PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBp
bnN0ZWFkIG9mICouCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVn
ZXJEaWdpdHM7ICsraSkKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAg
IGFwcGVuZE51bWJlckZvcm1hdERpZ2l0T3B0aW9uc1RvU2tlbGV0b24odGhpcywgc2tlbGV0b25C
dWlsZGVyKTsKIAotICAgIHN3aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKLSAgICBjYXNlIEludGxS
b3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ZyYWN0aW9uLXByZWNpc2lvbgotICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCIgLiIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzIC0gbV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKLSAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAvLyBDb25maWd1cmUgdGhp
cyBqdXN0IGFmdGVyIHByZWNpc2lvbi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29k
ZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9z
a2VsZXRvbnMubWQjdHJhaWxpbmctemVyby1kaXNwbGF5CisgICAgc3dpdGNoIChtX3RyYWlsaW5n
WmVyb0Rpc3BsYXkpIHsKKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CiAgICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50
RGlnaXRzOiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3Uv
YmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25z
Lm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KLSAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgnICcpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJ0AnKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzIC0gbV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKLSAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOgotICAgICAgICAvLyBE
byBub3Qgc2V0IGFueXRoaW5nLgorICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6U3RyaXBJ
ZkludGVnZXI6CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIHRyYWlsaW5nIHplcm8g
ZGlzcGxheS4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9y
dCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21t
aXQvYjc5YzI5OWY5MGQ0MDIzYWMyMzdkYjNkMDMzNWQ1NjhiZjIxY2QzNgorICAgICAgICBpZiAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiL3ciKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00NjIsMjAgKzYw
Niw1NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1leGNlcHQtemVybyIpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKKyAgICAgICAgLy8gT25seSBJ
Q1U2OX4gc3VwcG9ydHMgbmVnYXRpdmUgc2lnbiBkaXNwbGF5LiBJZ25vcmUgdGhpcyBvcHRpb24g
aWYgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC8xYWEwZGFkOGUwNmVjYzk5YmZmNDQyZGQz
N2Y2ZGFhMmQzOWQ5YTVhCisgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0g
NjkpIHsKKyAgICAgICAgICAgIGlmICh1c2VBY2NvdW50aW5nKQorICAgICAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFjY291bnRpbmctbmVnYXRpdmUiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2ln
bi1uZWdhdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlm
ICghbV91c2VHcm91cGluZykKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3Nh
bC1pbnRsLW51bWJlcmZvcm1hdC12My9pc3N1ZXMvMworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYWluL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9u
dW1iZXJzL3NrZWxldG9ucy5tZCNncm91cGluZworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykg
eworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkZhbHNlOgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIgZ3JvdXAtb2ZmIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBp
bmc6Ok1pbjI6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1taW4yIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBncm91cC1hdXRvIik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIGdyb3VwLW9uLWFsaWduZWQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgU3Ry
aW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgZGF0YUxvZ0xu
SWYoSW50bE51bWJlckZvcm1hdEludGVybmFsOjp2ZXJib3NlLCBza2VsZXRvbik7CiAgICAgU3Ry
aW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOworICAgIGF1dG8gdXBjb252ZXJ0ZWQgPSBz
a2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBtX251bWJlckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4odW51bWZfb3Bl
bkZvclNrZWxldG9uQW5kTG9jYWxlKHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KS5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMu
ZGF0YSgpLCAmc3RhdHVzKSk7CisgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9w
dHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29wZW5G
b3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVS
KQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJh
bmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZv
clNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQo
KSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1f
SURFTlRJVFlfRkFMTEJBQ0tfQVBQUk9YSU1BVEVMWSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25z
LmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgogI2Vsc2UKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7
CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CkBAIC01MjksMTIgKzcwNywxMyBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgIGNhc2UgU2lnbkRpc3BsYXk6Ok5ldmVyOgogICAgIGNhc2UgU2ln
bkRpc3BsYXk6OkFsd2F5czoKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgorICAg
IGNhc2UgU2lnbkRpc3BsYXk6Ok5lZ2F0aXZlOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNl
IHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1i
ZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERl
bGV0ZXI+KHVudW1fb3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIG1fbnVtYmVyRm9ybWF0ID0gc3Rk
Ojp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+KHVudW1f
b3BlbihzdHlsZSwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwg
bnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU5LDExICs3MzgsMjcg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fTUlOX1NJR05JRklDQU5UX0RJR0lUUywgbV9taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMpOwogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9NQVhfU0lHTklGSUNBTlRfRElHSVRTLCBtX21heGltdW1TaWduaWZp
Y2FudERpZ2l0cyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
Q29tcGFjdFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lv
bjoKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90
IHN1cHBvcnQgaXQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TGVzc1ByZWNpc2lvbjoKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2FzZSBzaW5jZSBsaW5rZWQg
SUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBt
X3VzZUdyb3VwaW5nKTsKKworICAgIHN3aXRjaCAobV91c2VHcm91cGluZykgeworICAgIGNhc2Ug
VXNlR3JvdXBpbmc6OkZhbHNlOgorICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBmYWxzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6CisgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ug
c2luY2UgbGlua2VkIElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdy
b3VwaW5nOjpBbHdheXM6CisgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fUk9VTkRJ
TkdfTU9ERSwgVU5VTV9ST1VORF9IQUxGVVApOwogI2VuZGlmCiB9CkBAIC01NzgsNyArNzczLDcg
QEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24KICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3Bl
blJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVu
dW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVy
Rm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsK
QEAgLTU5MywyOSArNzg4LDI2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICNlbmRpZgotICAg
IHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcgotSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHZhbHVlKSBjb25zdAor
SlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGF1dG8gc3RyaW5nID0gdmFsdWUtPnRvU3RyaW5nKGdsb2JhbE9iamVj
dCwgMTApOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBBU1NF
UlQoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpOwotICAgIGF1dG8qIHJh
d1N0cmluZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0ZXJz
OCgpKTsKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHJp
bmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsK
ICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9y
bWF0dGVyKTsKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRv
IGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9y
bWF0dGVkTnVtYmVyRGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7Ci0g
ICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgcmF3U3RyaW5n
LCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAg
dW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEo
KSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CiAgICAg
c3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5n
LCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CkBAIC02MjMsMTMgKzgxNSw4OSBAQCBK
U1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwogI2Vsc2UK
ICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOwotICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1hbCwgbV9udW1iZXJGb3JtYXQuZ2V0
KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOworICAgIGF1
dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RGVjaW1h
bCwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHN0cmluZy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3MpOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
YnVmZmVyKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIp
KSk7Cit9CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU1ZhbHVl
IEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOworCisgICAgaWYgKHN0ZDo6
aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKKyAgICAgICAgcmV0dXJuIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJlIG91dCBvZiBy
YW5nZSJfcyk7CisKKyAgICBpZiAoZW5kIDwgc3RhcnQpCisgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJf
cyk7CisKKyAgICBpZiAoc3RkOjpzaWduYml0KGVuZCkgJiYgIWVuZCAmJiBzdGFydCA+PSAwKQor
ICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFy
dCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVt
YmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJmX29wZW5SZXN1
bHQoJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEg
cmFuZ2UiX3MpOworCisgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIGF1
dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworCisgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0aCkpOwogfQogCitKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHN0YXJ0LCBJbnRsTWF0aGVtYXRpY2FsVmFs
dWUmJiBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFTU0VSVChtX251
bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkgPT0gSW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5cGUoKSA9
PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKKyAgICAgICAgcmV0dXJu
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJl
IG91dCBvZiByYW5nZSJfcyk7CisKKyAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBj
b25zdCBhdXRvJiBzdGFydFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOworCisgICAgZW5kLmVu
c3VyZU5vbkRvdWJsZSgpOworICAgIGNvbnN0IGF1dG8mIGVuZFN0cmluZyA9IGVuZC5nZXRTdHJp
bmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8g
cmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxldGVy
PHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIHVu
dW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3Rh
cnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5nLmRhdGEoKSwg
ZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICBhdXRvKiBmb3Jt
YXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVzKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKwor
ICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gdWZtdHZh
bF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0dXMpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKK30KKyNlbmRpZgorCiBBU0NJ
SUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiB7CiAg
ICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzI3LDExICs5OTUsODEgQEAgQVNDSUlMaXRlcmFsIElu
dGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNwbGF5
KQogICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNl
cHRaZXJvOgogICAgICAgICByZXR1cm4gImV4Y2VwdFplcm8iX3M7CisgICAgY2FzZSBTaWduRGlz
cGxheTo6TmVnYXRpdmU6CisgICAgICAgIHJldHVybiAibmVnYXRpdmUiX3M7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
K30KKworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhS
b3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAgICAgIHJldHVybiAiY2VpbCJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Rmxvb3I6CisgICAgICAgIHJldHVybiAiZmxvb3IiX3M7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICAgICAgcmV0dXJuICJleHBhbmQi
X3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICByZXR1cm4gInRydW5j
Il9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmQ2VpbDoKKyAgICAgICAgcmV0dXJuICJo
YWxmQ2VpbCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkZsb29yOgorICAgICAgICBy
ZXR1cm4gImhhbGZGbG9vciJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoK
KyAgICAgICAgcmV0dXJuICJoYWxmRXhwYW5kIl9zOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpI
YWxmVHJ1bmM6CisgICAgICAgIHJldHVybiAiaGFsZlRydW5jIl9zOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXZlbjoKKyAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworfQorCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxh
eVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCit7CisgICAg
c3dpdGNoICh0cmFpbGluZ1plcm9EaXNwbGF5KSB7CisgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNw
bGF5OjpBdXRvOgorICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgY2FzZSBUcmFpbGluZ1pl
cm9EaXNwbGF5OjpTdHJpcElmSW50ZWdlcjoKKyAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdl
ciJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91
bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBlIHJvdW5kaW5nVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHJvdW5kaW5nVHlwZSkgeworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6RnJh
Y3Rpb25EaWdpdHM6CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0
czoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6
TW9yZVByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJtb3JlUHJlY2lzaW9uIl9zOworICAgIGNh
c2UgSW50bFJvdW5kaW5nVHlwZTo6TGVzc1ByZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJsZXNz
UHJlY2lzaW9uIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6
dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdyb3VwaW5nKQoreworICAg
IHN3aXRjaCAodXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKKyAg
ICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6TWlu
MjoKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIiX3MpOworICAg
IGNhc2UgVXNlR3JvdXBpbmc6OkF1dG86CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJhdXRvIl9zKTsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAg
IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgIH0KKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVjdCog
SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiB7CkBAIC03NjQsMTQgKzExMDIsMjMgQEAgSlNPYmplY3QqIEludGxOdW1i
ZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHMpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bVNpZ25pZmljYW50RGln
aXRzKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFj
dFJvdW5kaW5nOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6TW9yZVByZWNpc2lvbjoKKyAg
ICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCBq
c051bWJlcihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1i
ZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVy
KG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJl
cihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNl
R3JvdXBpbmciKSwganNCb29sZWFuKG1fdXNlR3JvdXBpbmcpKTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpLCB1c2VH
cm91cGluZ1ZhbHVlKHZtLCBtX3VzZUdyb3VwaW5nKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm90YXRpb24iKSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBub3RhdGlvblN0cmluZyhtX25vdGF0aW9uKSkpOwogICAgIGlmIChtX25vdGF0
aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcGFjdERpc3BsYXkiKSwganNOb250
cml2aWFsU3RyaW5nKHZtLCBjb21wYWN0RGlzcGxheVN0cmluZyhtX2NvbXBhY3REaXNwbGF5KSkp
OwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InNpZ25EaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc2lnbkRpc3BsYXlTdHJpbmco
bV9zaWduRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwganNOb250cml2aWFsU3RyaW5nKHZtLCByb3VuZGluZ01vZGVT
dHJpbmcobV9yb3VuZGluZ01vZGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5yb3VuZGluZ0luY3JlbWVudCwganNOdW1iZXIobV9yb3VuZGluZ0luY3Jl
bWVudCkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHJh
aWxpbmdaZXJvRGlzcGxheSwganNOb250cml2aWFsU3RyaW5nKHZtLCB0cmFpbGluZ1plcm9EaXNw
bGF5U3RyaW5nKG1fdHJhaWxpbmdaZXJvRGlzcGxheSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nUHJpb3JpdHksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgcm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtNzgwLDUyICsxMTI3LDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQog
ICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwogfQogCi1zdGF0aWMgQVND
SUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQsIEludGxO
dW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgc3dpdGNoIChm
aWVsZCkgewotICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgotICAgICAgICBpZiAoc3RkOjpp
c25hbih2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gIm5hbiJfczsKLSAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiaW5maW5pdHkiX3M7Ci0g
ICAgICAgIHJldHVybiAiaW50ZWdlciJfczsKLSAgICBjYXNlIFVOVU1fRlJBQ1RJT05fRklFTEQ6
Ci0gICAgICAgIHJldHVybiAiZnJhY3Rpb24iX3M7Ci0gICAgY2FzZSBVTlVNX0RFQ0lNQUxfU0VQ
QVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImRlY2ltYWwiX3M7Ci0gICAgY2FzZSBVTlVN
X0VYUE9ORU5UX1NZTUJPTF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJleHBvbmVudFNlcGFyYXRv
ciJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfU0lHTl9GSUVMRDoKLSAgICAgICAgcmV0dXJu
ICJleHBvbmVudE1pbnVzU2lnbiJfczsKLSAgICBjYXNlIFVOVU1fRVhQT05FTlRfRklFTEQ6Ci0g
ICAgICAgIHJldHVybiAiZXhwb25lbnRJbnRlZ2VyIl9zOwotICAgIGNhc2UgVU5VTV9HUk9VUElO
R19TRVBBUkFUT1JfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZ3JvdXAiX3M7Ci0gICAgY2FzZSBV
TlVNX0NVUlJFTkNZX0ZJRUxEOgotICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOwotICAgIGNh
c2UgVU5VTV9QRVJDRU5UX0ZJRUxEOgotICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXMgInVuaXQi
LCB3ZSBzaG91bGQgcmVwb3J0IGFzIHVuaXQuCi0gICAgICAgIC8vIEpTVGVzdHMvdGVzdDI2Mi90
ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BlcmNlbnQt
ZW4tVVMuanMKLSAgICAgICAgcmV0dXJuIChzdHlsZSA9PSBJbnRsTnVtYmVyRm9ybWF0OjpTdHls
ZTo6VW5pdCkgPyAidW5pdCJfcyA6ICJwZXJjZW50U2lnbiJfczsKLSAgICBjYXNlIFVOVU1fU0lH
Tl9GSUVMRDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyAibWludXNTaWdu
Il9zIDogInBsdXNTaWduIl9zOwotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKLSAg
ICBjYXNlIFVOVU1fTUVBU1VSRV9VTklUX0ZJRUxEOgotICAgICAgICByZXR1cm4gInVuaXQiX3M7
Ci0gICAgY2FzZSBVTlVNX0NPTVBBQ1RfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiY29tcGFjdCJf
czsKLSNlbmRpZgotICAgIC8vIFRoZXNlIHNob3VsZCBub3Qgc2hvdyB1cCBiZWNhdXNlIHRoZXJl
IGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZW0gaW4gTnVtYmVyRm9ybWF0IG9wdGlvbnMuCi0gICAg
Ly8gSWYgdGhleSBkbywgdGhleSBkb24ndCBmaXQgd2VsbCBpbnRvIGFueSBvZiBrbm93biBwYXJ0
IHR5cGVzLCBzbyBjb25zaWRlciBpdCBhbiAidW5rbm93biIuCi0gICAgY2FzZSBVTlVNX1BFUk1J
TExfRklFTEQ6Ci0gICAgLy8gQW55IG5ld2VyIGFkZGl0aW9ucyB0byB0aGUgVU51bWJlckZvcm1h
dEZpZWxkcyBlbnVtIHNob3VsZCBqdXN0IGJlIGNvbnNpZGVyZWQgYW4gInVua25vd24iIHBhcnQu
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOwotICAgIH0KLSAgICBy
ZXR1cm4gInVua25vd24iX3M7Ci19Ci0KLXZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlIHN0eWxlLCBk
b3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYg
aXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3ZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVy
VHlwZSBudW1iZXJUeXBlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0
b3ImIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTg2OCw3ICsxMTcwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUK
ICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwogICAg
ICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50
SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQogICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0g
ICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxp
dGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZp
ZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgdmFsdWUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9
IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5n
KHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxl
LCBzaWduLCBudW1iZXJUeXBlKSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJp
bmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7
CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBl
LCBwYXJ0VHlwZSk7CkBAIC04OTQsNyArMTE5Niw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFs
CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOwotICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIFVGb3JtYXR0ZWRO
dW1iZXJEZWxldGVyPih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKICAgICB1bnVt
Zl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWRO
dW1iZXIuZ2V0KCksICZzdGF0dXMpOwpAQCAtOTE1LDE2ICsxMjE3LDYzIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdl
dCgpKTsKICNlbmRpZgogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsK
KyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisgICAg
SlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRp
Z3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0ludGVy
bmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgc3RkOjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhl
bWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURvdWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywg
aXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIHBhcnRzOworfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB2YWx1ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBj
b25zdCBhdXRvJiBzdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+
KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1
dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElD
VURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
CisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMp
OworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7
CisKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0
VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfcmVz
dWx0R2V0QWxsRmllbGRQb3NpdGlvbnMoZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5n
ZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
YSBudW1iZXIuIl9zKTsKKworICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0
ci5nZXQoKSk7CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3Vs
dCkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgZm9ybWF0
VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgdmFsdWUsIHJlc3VsdFN0cmlu
ZywgaXRlcmF0b3IsIHBhcnRzKTsKKyAgICBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2Jq
ZWN0LCBtX3N0eWxlLCB2YWx1ZS5zaWduKCksIHZhbHVlLm51bWJlclR5cGUoKSwgcmVzdWx0U3Ry
aW5nLCBpdGVyYXRvciwgcGFydHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICByZXR1cm4gcGFydHM7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgK
aW5kZXggMzhhNzcwYzU5ZDQxMDcwMGY4OWM0OWY3NjlhOTE0OWRiY2E4NTdkZS4uM2NlZmY4ZmE3
NmIyNWQ1ZGZjNTg3NjE0YWIyZDI5NjFlNDk1YmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMzgsMTkgKzM4LDExMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKLSNpbmNs
dWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNpZiAhZGVmaW5lZChIQVZFX0lDVV9V
X05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisjaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0g
NjgKKyNkZWZpbmUgSEFWRV9JQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSIDEKKyNlbmRpZgog
I2VuZGlmCiAKK3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyOworc3RydWN0IFVOdW1iZXJSYW5nZUZv
cm1hdHRlcjsKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEludGxGaWVsZEl0ZXJhdG9yOwog
Y2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6
IHVpbnQ4X3Q7CiAKLWVudW0gY2xhc3MgSW50bFJvdW5kaW5nVHlwZSA6IHVpbnQ4X3QgeyBGcmFj
dGlvbkRpZ2l0cywgU2lnbmlmaWNhbnREaWdpdHMsIENvbXBhY3RSb3VuZGluZyB9OworZW51bSBj
bGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZp
Y2FudERpZ2l0cywgTW9yZVByZWNpc2lvbiwgTGVzc1ByZWNpc2lvbiB9OworZW51bSBjbGFzcyBJ
bnRsUm91bmRpbmdQcmlvcml0eSA6IHVpbnQ4X3QgeyBBdXRvLCBNb3JlUHJlY2lzaW9uLCBMZXNz
UHJlY2lzaW9uIH07CiBlbnVtIGNsYXNzIEludGxOb3RhdGlvbiA6IHVpbnQ4X3QgeyBTdGFuZGFy
ZCwgU2NpZW50aWZpYywgRW5naW5lZXJpbmcsIENvbXBhY3QgfTsKIHRlbXBsYXRlPHR5cGVuYW1l
IEludGxUeXBlPiB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVj
dCosIEludGxUeXBlKiwgSlNPYmplY3QqLCB1bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNE
ZWZhdWx0LCB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBJbnRsTm90YXRp
b24pOwordGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0
RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJbnRsVHlwZSosIFN0cmluZ0J1aWxkZXImKTsKKworI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKK3N0cnVjdCBVTnVtYmVyRm9ybWF0dGVyRGVs
ZXRlciB7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVOdW1iZXJGb3Jt
YXR0ZXIqKTsKK307CisjZW5kaWYKKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1B
VFRFUikKK3N0cnVjdCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyIHsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJlclJhbmdlRm9ybWF0dGVyKik7Cit9Owor
I2VuZGlmCisKK2NsYXNzIEludGxNYXRoZW1hdGljYWxWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQoSW50bE1hdGhlbWF0aWNhbFZhbHVlKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIE51bWJlclR5cGUgeyBJbnRlZ2VyLCBJbmZpbml0eSwgTmFOLCB9OworICAgIHVzaW5nIFZh
bHVlID0gc3RkOjp2YXJpYW50PGRvdWJsZSwgQ1N0cmluZz47CisKKyAgICBJbnRsTWF0aGVtYXRp
Y2FsVmFsdWUoKSA9IGRlZmF1bHQ7CisKKyAgICBleHBsaWNpdCBJbnRsTWF0aGVtYXRpY2FsVmFs
dWUoZG91YmxlIHZhbHVlKQorICAgICAgICA6IG1fbnVtYmVyVHlwZShudW1iZXJUeXBlRnJvbURv
dWJsZSh2YWx1ZSkpCisgICAgICAgICwgbV9zaWduKHN0ZDo6c2lnbmJpdCh2YWx1ZSkpCisgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7IH0KKworICAgIGV4cGxpY2l0IEludGxNYXRoZW1h
dGljYWxWYWx1ZShOdW1iZXJUeXBlIG51bWJlclR5cGUsIGJvb2wgc2lnbiwgQ1N0cmluZyB2YWx1
ZSkKKyAgICAgICAgOiBtX251bWJlclR5cGUobnVtYmVyVHlwZSkKKyAgICAgICAgLCBtX3NpZ24o
c2lnbikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGVuc3VyZU5vbkRvdWJsZSgpCisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxkb3VibGU+KG1fdmFsdWUpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbnVtYmVyVHlw
ZSkgeworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpJbnRlZ2VyOiB7CisgICAgICAgICAg
ICAgICAgZG91YmxlIHZhbHVlID0gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RkOjpzaWduYml0KHZhbHVlKSAmJiAhdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIG1fdmFsdWUgPSBDU3RyaW5nKCItMCIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZSA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBOdW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IENTdHJpbmcoIm5h
biIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBl
OjpJbmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0gQ1N0cmluZyhtX3NpZ24gPyAi
LWluZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVyVHlwZSBudW1iZXJUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUdldERvdWJsZSgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+
KG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIGNvbnN0IENTdHJpbmcm
IGdldFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxDU3Ry
aW5nPihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVtYmVyVHlwZSBudW1iZXJUeXBl
RnJvbURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoc3RkOjppc25hbih2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6TmFOOworICAgICAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE51bWJlclR5cGU6Oklu
ZmluaXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50ZWdlcjsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBOdW1iZXJUeXBlOjpJbnRlZ2Vy
IH07CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZhbHVlIG1fdmFsdWUgeyAwLjAg
fTsKK307CiAKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CkBAIC03NiwyNCArMTY3LDM2IEBAIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFs
dWUgb3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRv
dWJsZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0lu
dCopIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhl
bWF0aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVS
KQorICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1h
dGljYWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91
YmxlLCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNv
bnN0OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQo
Vk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90
IHsgRGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lk
IGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0
cmluZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxW
YWx1ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJh
dG9yJiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGln
aXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlw
ZT4KKyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxl
dG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJG
b3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3Vu
ZGluZ1R5cGUpOworCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMjA4LDEwIEBA
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgZW51bSBjbGFzcyBDdXJyZW5jeVNpZ24gOiB1aW50OF90IHsgU3RhbmRhcmQsIEFjY291
bnRpbmcgfTsKICAgICBlbnVtIGNsYXNzIFVuaXREaXNwbGF5IDogdWludDhfdCB7IFNob3J0LCBO
YXJyb3csIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIENvbXBhY3REaXNwbGF5IDogdWludDhfdCB7
IFNob3J0LCBMb25nIH07Ci0gICAgZW51bSBjbGFzcyBTaWduRGlzcGxheSA6IHVpbnQ4X3QgeyBB
dXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvIH07CisgICAgZW51bSBjbGFzcyBTaWduRGlz
cGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBOZXZlciwgQWx3YXlzLCBFeGNlcHRaZXJvLCBOZWdhdGl2
ZSB9OworICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJvRGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRv
LCBTdHJpcElmSW50ZWdlciB9OworICAgIGVudW0gY2xhc3MgVXNlR3JvdXBpbmcgOiB1aW50OF90
IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9OworICAgIGVudW0gY2xhc3MgUm91bmRpbmdN
b2RlIDogdWludDhfdCB7IENlaWwsIEZsb29yLCBFeHBhbmQsIFRydW5jLCBIYWxmQ2VpbCwgSGFs
ZkZsb29yLCBIYWxmRXhwYW5kLCBIYWxmVHJ1bmMsIEhhbGZFdmVuIH07CiAKICAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDE0ICsyMTks
MTcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNw
bGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBh
Y3REaXNwbGF5KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNwbGF5U3RyaW5nKFNp
Z25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nTW9kZVN0cmluZyhS
b3VuZGluZ01vZGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHJhaWxpbmdaZXJvRGlzcGxh
eVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB1c2VHcm91
cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRG
dW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIp
Ci0gICAgdXNpbmcgVU51bWJlckZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1mX2Ns
b3NlPjsKLSAgICB1c2luZyBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51
bWZfY2xvc2VSZXN1bHQ+OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBV
TnVtYmVyRm9ybWF0dGVyRGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7CisjaWYgSEFWRShJQ1Vf
VV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFu
Z2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXI7CisjZW5kaWYKICNlbHNlCi0gICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVudW1fY2xvc2U+OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9y
bWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+PiBtX251bWJlckZvcm1hdDsKICNlbmRpZgogCkBA
IC0xMzMsNiArMjQyLDcgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7
IDMgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAg
ICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBtX3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6
RGVjaW1hbCB9OwogICAgIEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKICAgICBD
dXJyZW5jeVNpZ24gbV9jdXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMjUwLDkgQEAgY2xhc3MgSW50
bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBDb21w
YWN0RGlzcGxheSBtX2NvbXBhY3REaXNwbGF5OwogICAgIEludGxOb3RhdGlvbiBtX25vdGF0aW9u
IHsgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRpc3Bs
YXk7Ci0gICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIFRyYWlsaW5nWmVyb0Rp
c3BsYXkgbV90cmFpbGluZ1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byB9
OworICAgIFVzZUdyb3VwaW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91cGluZzo6QWx3YXlzIH07
CisgICAgUm91bmRpbmdNb2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kIH07CiAgICAgSW50bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGlu
Z1R5cGU6OkZyYWN0aW9uRGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAyM2QzODYz
ZDE2MDA0MzFlZjc0ZGY0MGM4NzQ0NzE3NjZkMDUxNjlhLi4xYWY0MWVhMjEyM2I1ZDZmYTI5MWNh
ZmQzZjJlZjYyZGVhYjc4Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKIApAQCAtNjEsNDcgKzYyLDEzNSBAQCB2
b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsVHlwZSogaW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRl
Z2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERp
Z2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5k
aW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICB1
bnNpZ25lZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11
bVNpZ25pZmljYW50RGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0
LCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11
bVNpZ25pZmljYW50RGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnRE
aWdpdHM7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKKyAgICBJbnRsUm91
bmRpbmdQcmlvcml0eSByb3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQ
cmlvcml0eT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGlu
Z1ByaW9yaXR5LCB7IHsgImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsg
Im1vcmVQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0s
IHsgImxlc3NQcmVjaXNpb24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9u
IH0gfSwgInJvdW5kaW5nUHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVBy
ZWNpc2lvblwiLCBvciBcImxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6
OkF1dG8pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBi
b29sIGhhc1NkID0gIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkg
fHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9v
bCBoYXNGZCA9ICFtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFt
YXhpbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNk
ID0gaGFzU2QgfHwgcm91bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0
bzsKKyAgICBib29sIG5lZWRGZCA9ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9u
OjpDb21wYWN0KSB8fCByb3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpB
dXRvOworCisgICAgaWYgKG5lZWRTZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVy
T3B0aW9uKGdsb2JhbE9iamVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRz
LCAyMSwgMjEpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMg
PSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZp
Y2FudERpZ2l0cyA9IDE7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzID0gMjE7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1pbmltdW1G
cmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVm
aW5lZFZhbHVlID0gVUlOVDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5n
VHlwZSA9IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25l
ZCBzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlv
bihnbG9iYWxPYmplY3QsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5h
bWVzLT5taW5pbXVtRnJhY3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVk
IHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNp
ZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAg
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25E
aWdpdHNEZWZhdWx0LCBzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1
bnNpZ25lZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihn
bG9iYWxPYmplY3QsIChzcGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVk
VmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlv
bkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhp
bXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpz
TnVtYmVyKHNwZWNpZmllZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMt
Pm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGln
aXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBp
cyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgIGlmIChuZWVkRmQpIHsKKyAgICAgICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAg
ICBjb25zdGV4cHIgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAg
ICAgICAgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJP
cHRpb24oZ2xvYmFsT2JqZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVy
dHlOYW1lcy0+bWluaW11bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0
aW9uKGdsb2JhbE9iamVjdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5
TmFtZXMtPm1heGltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAg
ICAgIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAg
ICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9u
RGlnaXRzRGVmYXVsdCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdp
dHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAo
bWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRz
Il9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rp
b25EaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQ7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0
aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKICAgICAgICAgfQotICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0
aW9uRGlnaXRzOwotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRz
ID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG5vdGF0aW9uID09IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5z
dGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5n
OwotICAgICAgICByZXR1cm47CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAg
aWYgKHJvdW5kaW5nUHJpb3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNp
b24pCisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5k
aW5nVHlwZTo6TW9yZVByZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0
eSA9PSBJbnRsUm91bmRpbmdQcmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lz
aW9uOworICAgICAgICBlbHNlIGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+
bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlu
dGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lz
aW9uOworICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsK
KyAgICAgICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAg
ICAgIGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKICAgICB9Cit9
CiAKLSAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6
RnJhY3Rpb25EaWdpdHM7Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0
cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNlLT5tX21h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KK3ZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRp
b25zVG9Ta2VsZXRvbihJbnRsVHlwZSogaW50bEluc3RhbmNlLCBTdHJpbmdCdWlsZGVyJiBza2Vs
ZXRvbkJ1aWxkZXIpCit7CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2lj
dS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRv
bnMubWQjaW50ZWdlci13aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRlZ2Vy
LXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8v
IFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0
czsgKytpKQorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBpZiAo
aW50bEluc3RhbmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHByZWNpc2lvbi1pbmNyZW1lbnQvIik7CisgICAgICAgIGF1dG8g
c3RyaW5nID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDEwPj4oaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKGludGxJbnN0YW5jZS0+
bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPj0gc3RyaW5nLnNpemUoKSkgeworICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiMC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAoaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIHN0cmlu
Zy5zaXplKCkpOyArK2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
MCcpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLnNpemUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBub25GcmFjdGlvbiA9IHN0cmluZy5zaXplKCkgLSBpbnRsSW5zdGFuY2UtPm1fbWF4
aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBpbnRsSW5zdGFuY2UtPm1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IHN3aXRjaCAoaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSkgeworICAgICAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOiB7CisgICAgICAgICAgICAvLyBodHRwczov
L2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zv
cm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsg
KytpKQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzIC0gaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2ln
bmlmaWNhbnREaWdpdHM6IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmlj
b2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJl
cnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMgLSBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyAr
K2kpCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpN
b3JlUHJlY2lzaW9uOgorICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNp
b246CisgICAgICAgICAgICAvLyBCZWZvcmUgSW50bC5OdW1iZXJGb3JtYXQgdjMsIGl0IHdhcyBD
b21wYWN0Um91bmRpbmcgbW9kZSwgd2hlcmUgd2UgZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4K
KyAgICAgICAgICAgIC8vIFNvLCBpZiBsaW5rZWQgSUNVIGlzIH42OCwgd2UgZG8gbm90aGluZy4K
KyAgICAgICAgICAgIGlmIChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9k
N2RiNmMxZjg2NTViYjUzMTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0CisgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2Vy
Z3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAgICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25E
aWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
MCcpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFu
Y2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0gaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFj
dGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOwor
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1f
bWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW50bEluc3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIGludGxJ
bnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91
bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJ
dGVyYXRvciB7CkBAIC0xMjgsNCArMjE3LDU3IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJ
bnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAg
ICAgcmV0dXJuIHVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0
PihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25z
dHJ1Y3RvcigpKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVy
Zm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQvZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGlj
YWx2YWx1ZQoraW5saW5lIEludGxNYXRoZW1hdGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxW
YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0
cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUg
eyBudW1iZXIudmFsdWUoKSB9OworCisgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1By
aW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJl
cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmln
SW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKSAtPiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6
dHJ5RXh0cmFjdERvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0
aWNhbFZhbHVlIHsgbnVtYmVyLnZhbHVlKCkgfTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2
YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAg
ICAgIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAg
ICAgIGJpZ0ludC0+c2lnbigpLAorICAgICAgICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAg
IH07CisgICAgfTsKKworICAgIGlmIChwcmltaXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZSkpOworCisgICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUg
eyBwcmltaXRpdmUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJp
bmcgPSBhc1N0cmluZyhwcmltaXRpdmUpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmln
SW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHN0cmluZyk7CisgICAgaWYgKGJpZ0lu
dCkgeworICAgICAgICAvLyBJZiBpdCBpcyAtMCwgd2UgY2Fubm90IGhhbmRsZSBpdCBpbiBKU0Jp
Z0ludC4gUmVwYXJzZSB0aGUgc3RyaW5nIGFzIGRvdWJsZS4KKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpICYmICF2YWx1ZS5iaWdJbnQzMkFzSW50MzIo
KSkKKyAgICAgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBqc1RvTnVtYmVy
KHN0cmluZykgfTsKKyNlbmRpZgorICAgICAgICBpZiAoYmlnSW50LmlzSGVhcEJpZ0ludCgpICYm
ICFhc0hlYXBCaWdJbnQoYmlnSW50KS0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gSW50
bE1hdGhlbWF0aWNhbFZhbHVlIHsganNUb051bWJlcihzdHJpbmcpIH07CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFs
T2JqZWN0LCBiaWdJbnQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZh
bHVlIHsganNUb051bWJlcihzdHJpbmcpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcAppbmRleCBkZWYwMjliMTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0
NmJlNzI4Li5jYmVmNjA5MDk5NzJkNmFjMmI2ZThkZmVkOWNkMDQ0NDYwNmYyMDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcApAQCAtMzksNiArMzksMTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0KTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAg
Y29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIklu
dGwuTnVtYmVyRm9ybWF0IiwgJkJhc2UKIEBlbmQKICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKQEAgLTcyLDExICs3NiwxNSBAQCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewog
fQogCi12b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1udW1iZXItZm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYg
Kzk0LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zv
cm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJp
Z0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIo
KSkgewotICAgICAgICBkb3VibGUgdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0
aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBp
ZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1
ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmln
SW50MzJBc0ludDMyKCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1i
ZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgor
ICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIG51bWJlci52YWx1ZSgpKSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9y
TnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKLSAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51
bWJlci5hc0hlYXBCaWdJbnQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZv
cm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmpl
Y3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEz
Nyw2ICsxMzIsMzggQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBu
b3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4KKyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKworICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisKKyAgICBpZiAoc3RhcnRWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVl
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8g
c3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9
IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJl
ciA9IHN0YXJ0LnRyeUdldERvdWJsZSgpKSB7CisgICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9
IGVuZC50cnlHZXREb3VibGUoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0
LCBzdGFydE51bWJlci52YWx1ZSgpLCBlbmROdW1iZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQt
PmZvcm1hdFJhbmdlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkp
KTsKK30KKyNlbmRpZgorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTE1MCwxMCArMTc3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAg
aWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51
bWJlckZvcm1hdCJfcykpOwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAg
IGF1dG8gdmFsdWUgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSB2YWx1ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5m
b3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgbnVtYmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91
YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgKaW5kZXggNjE3NWY5ZGQwOTM3OTI5ZjhmZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMz
N2Q2MGY2Njc4NDBiY2MwNGEzMjQ4M2JjZTBhNmE0NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
aApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAx
OTZlOGY0MTI0NjM2MWEuLjQxYzJiZmRmNmVlNTE1YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaApAQCAtMTUxLDYgKzE1MSw0NSBAQCBSZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJl
dHVybiBmYWxsYmFjazsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3Vs
dFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBl
IHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFs
IG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0VHlwZSBmYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2Rp
ZmYuaHRtbCNzZWMtZ2V0c3RyaW5nb3Jib29sZWFub3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVz
LnNpemUoKSA+IDApOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghb3B0aW9ucykK
KyAgICAgICAgcmV0dXJuIGZhbGxiYWNrOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlm
ICh2YWx1ZS5pc0Jvb2xlYW4oKSAmJiB2YWx1ZS5hc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlVmFsdWU7CisKKyAgICAgICAgYm9vbCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jv
b2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlQm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzeVZhbHVlOworCisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAg
ICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IHN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeS5zZWNvbmQ7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5k
TWVzc2FnZSkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBmYWxs
YmFjazsKK30KIAogQUxXQVlTX0lOTElORSBib29sIGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJp
c29uKFVDaGFyIGNoYXJhY3RlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYy
YmZjM2QyOGEzNWU0ODkuLjg0MmQzZmE5YTMxZTM3NjMyMTBmMWQ0OWNhOTdjMGNiNzUxNGRjYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcApAQCAtMzIsOCArMzIsMjYgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRl
ZiBVX0hJREVfRFJBRlRfQVBJCisjZW5kaWYKKyNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxl
cy5oPgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2Rl
L3VudW1iZXJmb3JtYXR0ZXIuaD4KKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdF
X0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgor
I2VuZGlmCisjZGVmaW5lIFVfSElERV9EUkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAor
dm9pZCBVUGx1cmFsUnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFs
UnVsZXMpCit7CisgICAgaWYgKHBsdXJhbFJ1bGVzKQorICAgICAgICB1cGxydWxlc19jbG9zZShw
bHVyYWxSdWxlcyk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxl
dGVyID0gSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTI1LDM0IEBAIHZvaWQg
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2Jh
bE9iamVjdCwgdGhpcywgb3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxl
ID0gbV9sb2NhbGUudXRmOCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBt
X2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElD
VV9VX05VTUJFUl9GT1JNQVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7
CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisK
KyAgICBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKHRoaXMsIHNrZWxl
dG9uQnVpbGRlcik7CisKKyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0
byB1cGNvbnZlcnRlZCA9IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKwor
ICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIs
IFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUo
dXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwg
JnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFs
UnVsZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1C
RVJfUkFOR0VfRk9STUFUVEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxl
dGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFj
ayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NP
TExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vs
c2UKKyAgICBtX251bWJlckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBV
TnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwg
bG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0x
MjUsMTMgKzE2OSwxMyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1
bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElH
SVRTLCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmli
dXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1f
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3Vu
ZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNz
UHJlY2lzaW9uOgogICAgICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVy
YWxSdWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVf
T1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFs
UnVsZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVy
Pih1cGxydWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3Jk
aW5hbCA/IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxl
cyJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw4ICsyMDMsMTIgQEAgSlNPYmplY3QqIElu
dGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cykpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQ
cmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFj
dGlvbkRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25E
aWdpdHMsIGpzTnVtYmVyKG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGln
aXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERp
Z2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC0xODMsOCArMjMxLDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVn
b3JpZXMiKSwgY2F0ZWdvcmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJl
ckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAt
MTk5LDEyICsyNDgsNTcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1i
ZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFs
dWUiX3MpOworICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwg
dmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNo
YXIsIDMyPiBidWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVwbHJ1bGVzX3NlbGVjdEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVk
TnVtYmVyLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
c2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
V1RGTW92ZShidWZmZXIpKSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgp
OwogICAgIGF1dG8gbGVuZ3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1
bGVzLmdldCgpLCB2YWx1ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJl
c3VsdC5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
c2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhyZXN1bHQuZGF0YSgpLCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9O
VU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJh
bmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVu
ZCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0
ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3Bl
blJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxl
Y3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVS
YW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQo
KSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFu
Z2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsK
KyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0
Rm9yUmFuZ2UsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7Cisg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1
ZmYyZTVmMGY2ZTQuLmViYzA0YWE1Nzk5Y2U2Y2NhOGQzZGJmY2U5ZjgwNmE4MzY2MWVkZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBA
IC0yOCwxMSArMjgsMTYgQEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNs
dWRlIDx1bmljb2RlL3VudW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgog
I2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFs
UnVsZXM7CisKIG5hbWVzcGFjZSBKU0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOwor
fTsKKwogZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNz
IEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTU5
LDExICs2NCwxNyBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmll
bmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRs
VHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
dW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYp
OwogCiAgICAgdm9pZCBpbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9i
YWxPYmplY3QqLCBkb3VibGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JB
TkdFX0ZPUk1BVFRFUikKKyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEludGxQbHVyYWxSdWxlcyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKQEAgLTczLDExICs4NCwxNiBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29s
IHsgQ2FyZGluYWwsIE9yZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVwbHJ1bGVzX2Nsb3NlPjsKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVs
ZXRlciA9IElDVURlbGV0ZXI8dW51bV9jbG9zZT47Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBs
dXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUo
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJl
clJhbmdlRm9ybWF0dGVyOworI2VuZGlmCisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXRE
ZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlm
CiAKICAgICBTdHJpbmcgbV9sb2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRp
Z2l0cyB7IDEgfTsKQEAgLTg1LDYgKzEwMSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFj
dGlvbkRpZ2l0cyB7IDMgfTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0
cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIEludGxSb3VuZGlu
Z1R5cGUgbV9yb3VuZGluZ1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9
OwogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmNwcAppbmRleCBjODBiZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5
ZmUyOWJiMjM5ODBjNjQ3YmE0YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOwor
I2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNv
bnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwu
UGx1cmFsUnVsZXMiLCAmQmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUqIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAK
QEAgLTY3LDExICs3MCwxNSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lk
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNp
ZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGlu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
OTIsNiArOTksMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1By
b3RvdHlwZUZ1bmNTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9i
amVjdCwgdmFsdWUpKSk7CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRU
RVIpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVu
Y1NlbGVjdFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRt
bCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1
cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwg
ZW5kKSkpOworfQorI2VuZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMw
MzdmMTAzNTkzNjI1MDg0Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRl
OgogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApp
bmRleCAwYjU5NjYxMmZmOGMzNWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1Li5jMjUzODUwMGZi
OGUzNDE3Y2JmMWM2MDhhZWQ1MjFiNzU0YmU5YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMzE4
LDcgKzMxOCw3IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgIH0KIAogICAgICAg
ICBJbnRsRmllbGRJdGVyYXRvciBmaWVsZEl0ZXJhdG9yKCppdGVyYXRvci5nZXQoKSk7Ci0gICAg
ICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3Qs
IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVt
YmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0
KS50b1N0cmluZygpKSk7CisgICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJ
bnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBz
dGQ6OnNpZ25iaXQoYWJzVmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVG
cm9tRG91YmxlKGFic1ZhbHVlKSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0
cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAy
YjcxZWRjYjMzNGRmZDc4Li5iNzYzMTY3MTQxNGM5M2M1ZmQ4NDQ5M2NjNDlhM2EzNzc2MjQ4MTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2ICs0
NjIsOCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBy
ZXR1cm4gaGFzaFNsb3coKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQo
Vk0mLCBTdHJ1Y3R1cmUqLCBEaWdpdCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2
NzgsNDIgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmln
SW50KiBiaWdJbnQpCiAgICAgcmV0dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFz
TnVtYmVyKCk7CisKKyAgICBpZiAoIXZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlLmlzQmlnSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisK
KyAgICBBU1NFUlQodmFsdWUuaXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQg
PSB2YWx1ZS5hc0hlYXBCaWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgdWludDY0X3QgaW50ZWdlciA9IDA7CisgICAgaWYgY29uc3Rl
eHByIChzaXplb2YoRGlnaXQpID09IDgpIHsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkg
IT0gMSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGludGVnZXIg
PSBiaWdJbnQtPmRpZ2l0KDApOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2Yo
RGlnaXQpID09IDQpOworICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdp
dCgwKTsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIGlu
dGVnZXIgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KDEpKSA8PCAzMik7
CisgICAgfQorCisgICAgaWYgKGludGVnZXIgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFNh
ZmVJbnRlZ2VyKCkpKQorICAgICAgICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0aWNf
Y2FzdDxkb3VibGU+KGludGVnZXIpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKTsKKwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwMmU1YzQx
ZTRiZDI2Mjg1OWU1MmNmNDkzMjc1YWE4OWJlY2Y1MWQ1Li42MGQ3ODI1NzFmM2Q5MDY4Yjk4Zjk4
NjliMzEwZTFmZmJlOTE4MmNkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTEwLTI2ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEludGxO
dW1iZXJGb3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1sYXJnZS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LWZvcm1hdC1yYW5nZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAgIChuZi5m
b3JtYXRSYW5nZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mb3JFYWNoKToKKyAgICAgICAgKG5mLmZv
cm1hdFJhbmdlVG9QYXJ0cy52YWxpZFJhbmdlcy5mb3JFYWNoKToKKyAgICAgICAgKG5mNi5mb3Jt
YXRSYW5nZS5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LWZvcm1hdC1zdHJpbmctdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9y
bWF0LXRvLXBhcnRzLmpzOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3Vu
ZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAg
ICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12My5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFJvdW5kaW5nSW5j
cmVtZW50cy5mb3JFYWNoKToKKyAgICAgICAgKGludmFsaWRSb3VuZGluZ0luY3JlbWVudHMuZm9y
RWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3Jl
bWVudC12YWx1ZS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICog
c3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoT2JqZWN0LmtleXMuZXhwZWN0YXRpb25zLmZvckVhY2gpOgorICAgICAgICAq
IHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXYzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbGlk
Um91bmRpbmdNb2RlLmZvckVhY2gpOgorICAgICAgICAoaW52YWxpZFJvdW5kaW5nTW9kZS5mb3JF
YWNoKToKKyAgICAgICAgKGxldC5vcHRpb25zLmdldCBzaWduRGlzcGxheSk6CisgICAgICAgIChs
ZXQub3B0aW9ucy5nZXQgcm91bmRpbmdNb2RlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1i
ZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5
LXJlc29sdmVkLW9wdGlvbnMtdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3BsYXktdjMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51
bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2YWxpZFVzZUdyb3VwaW5nLmZvckVh
Y2gpOgorICAgICAgICAoaW52YWxpZFVzZUdyb3VwaW5nLmZvckVhY2gpOgorICAgICAgICAoYWxs
LmZvckVhY2gpOgorICAgICAgICAobWdkMS5mb3JFYWNoKToKKyAgICAgICAgKG1nZDIuZm9yRWFj
aCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzOgorICAgICAgICAodGVz
dE51bWJlckZvcm1hdCk6CisgICAgICAgIChzaG91bGRCZS50ZXN0TnVtYmVyRm9ybWF0LkludGwu
TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3Ry
YW5nZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogdGVzdDI2Mi9j
b25maWcueWFtbDoKKwogMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0ZXN0MjYyIGJvdCBmYWlsdXJlcwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LWxhcmdlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFhZWYwNzM5MDYwNDczZjBiNWE1OWI3OWVhZDgwOWYxMzA5ZWZkNjEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtbGFyZ2Uu
anMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworY29uc3QgbmYg
PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIik7Citjb25zdCBzdGFydCA9IDk4NzY1NDMy
MTk4NzY1NDMyMW47Citjb25zdCBlbmQgPSA5ODc2NTQzMjE5ODc2NTQzMjJuOworc2hvdWxkQmUo
bmYuZm9ybWF0KHN0YXJ0KSwgYDk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIxYCk7CitpZiAobmYuZm9y
bWF0UmFuZ2UpCisgICAgc2hvdWxkQmUobmYuZm9ybWF0UmFuZ2Uoc3RhcnQsIGVuZCksIGA5ODcs
NjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjIyMzdjMTcwZjE2Y2ExNmNiMjI4OTFlZWQ1YWE3NWU2MjM4MmM0MgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5n
ZS12My5qcwpAQCAtMCwwICsxLDIyMyBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUp
IHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGlu
c3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e2Vycm9yVHlwZS5uYW1lfSBidXQgZ290ICR7U3RyaW5nKGVycm9yKX0hYCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdFRocm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2NvbnN0IHZhbGlk
UmFuZ2VzID0gW1stMTIzNDUsIC01Njc4XSwgWy0xMjM0NSwgNTY3ODldLCBbMTIzNDUsIDU2Nzg5
XV07CisKK2NvbnN0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHtzaWduRGlzcGxh
eTogImV4Y2VwdFplcm8ifSk7CitpZiAobmYuZm9ybWF0UmFuZ2UpIHsKKyAgICBbJ2Zvcm1hdFJh
bmdlJ10uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHsKKyAgICAgICAgc2hvdWxkQmUoImZ1bmN0
aW9uIiwgdHlwZW9mIG5mW21ldGhvZF0pOworCisgICAgICAgIC8vIDIuIFBlcmZvcm0gPyBSZXF1
aXJlSW50ZXJuYWxTbG90KG5mLCBbW0luaXRpYWxpemVkTnVtYmVyRm9ybWF0XV0pLgorICAgICAg
ICAvLyBBc3NlcnQgaWYgY2FsbGVkIHdpdGhvdXQgbmYKKyAgICAgICAgbGV0IGYgPSBuZlttZXRo
b2RdOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGYoMSwgMjMpIH0sIFR5cGVFcnJvcik7
CisKKyAgICAgICAgLy8gQXNzZXJ0IG5vcm1hbCBjYWxsIHN1Y2Nlc3MKKyAgICAgICAgc2hvdWxk
Tm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxLCAyMykpOworCisgICAgICAgIC8vIDMuIElmIHN0
YXJ0IGlzIHVuZGVmaW5lZCAuLi4sIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKHVuZGVmaW5lZCwgMjMpIH0sIFR5cGVF
cnJvcik7CisgICAgICAgIC8vIDMuIElmIC4uLiBlbmQgaXMgdW5kZWZpbmVkLCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9k
XSgxLCB1bmRlZmluZWQpIH0sIFR5cGVFcnJvcik7CisKKyAgICAgICAgLy8gNC4gTGV0IHggYmUg
PyBUb051bWVyaWMoc3RhcnQpLgorICAgICAgICAvLyBWZXJpZnkgaXQgd29uJ3QgdGhyb3cgZXJy
b3IKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXShudWxsLCAyMykpOwor
ICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKGZhbHNlLCAyMykpOworICAg
ICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKHRydWUsIDIzKSk7CisgICAgICAg
IHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oIjEyIiwgMjMpKTsKKyAgICAgICAgc2hv
dWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MCIsIDIzKSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXShTeW1i
b2woMTIpLCAyMykgfSwgVHlwZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4g
bmZbbWV0aG9kXSgxMiwgMjMpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0
aG9kXSgxMm4sIDIzKSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSh7
fSwgLTIzKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4geyBu
ZlttZXRob2RdKFtdLCAyMykgfSk7CisKKyAgICAgICAgLy8gNS4gTGV0IHkgYmUgPyBUb051bWVy
aWMoZW5kKS4KKyAgICAgICAgLy8gVmVyaWZ5IGl0IHdvbid0IHRocm93IGVycm9yCisgICAgICAg
IHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oLTEyLCBudWxsKSk7CisgICAgICAgIHNo
b3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oLTEyLCBmYWxzZSkpOworICAgICAgICBzaG91
bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKC0xMiwgdHJ1ZSkpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAiMjMiKSk7CisgICAgICAgIHNob3VsZE5vdFRo
cm93KCgpID0+IG5mW21ldGhvZF0oMTIsICIyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIp
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCBTeW1ib2woMjMp
KSB9LCBUeXBlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2Rd
KDEyLCAyMykpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAy
M24pKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMiwge30pIH0s
IFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0o
LTEyLCBbXSkgfSk7CisKKyAgICAgICAgLy8gNi4gSWYgeCBpcyBOYU4gLi4uLCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhv
ZF0oTmFOLCAyMykgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsg
bmZbbWV0aG9kXSgiTmFOIiwgMjMpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICAvLyA2LiBJZiAu
Li4geSBpcyBOYU4sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgTmFOKSB9LCBSYW5nZUVycm9yKTsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDEyLCAiTmFOIikgfSwgUmFuZ2VFcnJv
cik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgInh5eiIpIH0s
IFJhbmdlRXJyb3IpOworCisgICAgICAgIC8vIDcuIElmIHggaXMgYSBub24tZmluaXRlIE51bWJl
ciAuLi4sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3VsZE5vdFRo
cm93KCgpID0+IHsgbmZbbWV0aG9kXSgtMTIvMCwgMTIvMCkgfSk7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMi8wLCAtMTIvMCkgfSwgUmFuZ2VFcnJvcik7CisKKyAg
ICAgICAgLy8gOC4gSWYgeCBpcyBncmVhdGVyIHRoYW4geSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4
Y2VwdGlvbi4KKyAgICAgICAgLy8gbmVpdGhlciB4IG5vciB5IGFyZSBiaWdpbnQuCisgICAgICAg
IHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyMywgMTIpIH0sIFJhbmdlRXJyb3IpOwor
ICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEyLCAyMykpOworICAgICAg
ICAvLyB4IGlzIG5vdCBiaWdpbnQgYnV0IHkgaXMuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsgbmZbbWV0aG9kXSgyMywgMTJuKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90
VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjNuKSk7CisgICAgICAgIC8vIHggaXMgYmlnaW50
IGJ1dCB5IGlzIG5vdC4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKDIz
biwgMTIpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZltt
ZXRob2RdKDEybiwgMjMpKTsKKyAgICAgICAgLy8gYm90aCB4IGFuZCB5IGFyZSBiaWdpbnQuCisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyM24sIDEybikgfSwgUmFuZ2VF
cnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTJuLCAyM24p
KTsKKworICAgICAgICB2YWxpZFJhbmdlcy5mb3JFYWNoKAorICAgICAgICAgICAgZnVuY3Rpb24o
W3gsIHldKSB7CisgICAgICAgICAgICAgICAgY29uc3QgWCA9IEJpZ0ludCh4KTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBZID0gQmlnSW50KHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1h
dHRlZF94X3kgPSBuZlttZXRob2RdKHgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1h
dHRlZF9YX3kgPSBuZlttZXRob2RdKFgsIHkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1h
dHRlZF94X1kgPSBuZlttZXRob2RdKHgsIFkpOworICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1h
dHRlZF9YX1kgPSBuZlttZXRob2RdKFgsIFkpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZv
cm1hdHRlZF94X3ksIGZvcm1hdHRlZF9YX3kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZv
cm1hdHRlZF94X3ksIGZvcm1hdHRlZF94X1kpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGZv
cm1hdHRlZF94X3ksIGZvcm1hdHRlZF9YX1kpOworCisgICAgICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworLy8gQ2hlY2sgdGhlIG51bWJlciBvZiBwYXJ0IHdpdGggdHlwZTogInBsdXNTaWduIiBh
bmQgIm1pbnVzU2lnbiIgYXJlIGNvcnJlCitpZiAobmYuZm9ybWF0UmFuZ2VUb1BhcnRzKSB7Cisg
ICAgdmFsaWRSYW5nZXMuZm9yRWFjaCgKKyAgICAgICAgZnVuY3Rpb24oW3gsIHldKSB7CisgICAg
ICAgICAgICBjb25zdCBleHBlY3RlZFBsdXMgPSAoeCA+IDApID8gKCh5ID4gMCkgPyAyIDogMSkg
OiAoKHkgPiAwKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTWludXMgPSAo
eCA8IDApID8gKCh5IDwgMCkgPyAyIDogMSkgOiAoKHkgPCAwKSA/IDEgOiAwKTsKKyAgICAgICAg
ICAgIGxldCBhY3R1YWxQbHVzID0gMDsKKyAgICAgICAgICAgIGxldCBhY3R1YWxNaW51cyA9IDA7
CisgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IG5mLmZvcm1hdFJhbmdlVG9QYXJ0cyh4LCB5KTsK
KyAgICAgICAgICAgIHBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCkgeworICAgICAgICAgICAg
ICAgIGlmIChwYXJ0LnR5cGUgPT0gInBsdXNTaWduIikgYWN0dWFsUGx1cysrOworICAgICAgICAg
ICAgICAgIGlmIChwYXJ0LnR5cGUgPT0gIm1pbnVzU2lnbiIpIGFjdHVhbE1pbnVzKys7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9ICJmb3JtYXRSYW5nZVRvUGFy
dHMoIiArIHggKyAiLCAiICsgeSArICIpOiAiOworICAgICAgICAgICAgc2hvdWxkQmUoZXhwZWN0
ZWRQbHVzLCBhY3R1YWxQbHVzLAorICAgICAgICAgICAgICAgIG1ldGhvZCArICJOdW1iZXIgb2Yg
dHlwZTogJ3BsdXNTaWduJyBpbiBwYXJ0cyBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKGV4cGVjdGVkTWludXMsIGFjdHVhbE1pbnVzLAorICAgICAgICAgICAgICAgIG1ldGhv
ZCArICJOdW1iZXIgb2YgdHlwZTogJ21pbnVzU2lnbicgaW4gcGFydHMgaXMgaW5jb3JyZWN0Iik7
CisgICAgICAgIH0pOworfQorCisvLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bv
c2FsLWludGwtbnVtYmVyZm9ybWF0LXYzI2Zvcm1hdHJhbmdlLWVjbWEtNDAyLTM5MworY29uc3Qg
bmYyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJl
bmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAw
LAorfSk7CisKKy8vIFJFQURNRS5tZCBzYWlkIGl0IGV4cGVjdCAi4oKsM+KAkzUiCitpZiAobmYy
LmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKCLigqwzIOKAkyDigqw1IiwgbmYyLmZvcm1hdFJh
bmdlKDMsIDUpKTsKKworY29uc3QgbmYzID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIs
IHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgbWF4
aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmYzLmZvcm1hdFJhbmdlVG9QYXJ0cykg
eworICAgIGNvbnN0IGFjdHVhbDMgPSBuZjMuZm9ybWF0UmFuZ2VUb1BhcnRzKDMsIDUpOworICAg
IC8qCisgICAgWworICAgICAge3R5cGU6ICJjdXJyZW5jeSIsIHZhbHVlOiAi4oKsIiwgc291cmNl
OiAic3RhcnRSYW5nZSJ9CisgICAgICB7dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjMiLCBzb3Vy
Y2U6ICJzdGFydFJhbmdlIn0KKyAgICAgIHt0eXBlOiAibGl0ZXJhbCIsIHZhbHVlOiAi4oCTIiwg
c291cmNlOiAic2hhcmVkIn0KKyAgICAgIHt0eXBlOiAiaW50ZWdlciIsIHZhbHVlOiAiNSIsIHNv
dXJjZTogImVuZFJhbmdlIn0KKyAgICBdCisgICAgKi8KKyAgICBzaG91bGRCZSg1LCBhY3R1YWwz
Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1swXS50eXBlKTsKKyAg
ICBzaG91bGRCZSgi4oKsIiwgYWN0dWFsM1swXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoInN0YXJ0
UmFuZ2UiLCBhY3R1YWwzWzBdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUoImludGVnZXIiLCBhY3R1
YWwzWzFdLnR5cGUpOworICAgIHNob3VsZEJlKCIzIiwgYWN0dWFsM1sxXS52YWx1ZSk7CisgICAg
c2hvdWxkQmUoInN0YXJ0UmFuZ2UiLCBhY3R1YWwzWzFdLnNvdXJjZSk7CisgICAgc2hvdWxkQmUo
ImxpdGVyYWwiLCBhY3R1YWwzWzJdLnR5cGUpOworICAgIHNob3VsZEJlKCIg4oCTICIsIGFjdHVh
bDNbMl0udmFsdWUpOworICAgIHNob3VsZEJlKCJzaGFyZWQiLCBhY3R1YWwzWzJdLnNvdXJjZSk7
CisgICAgc2hvdWxkQmUoImN1cnJlbmN5IiwgYWN0dWFsM1szXS50eXBlKTsKKyAgICBzaG91bGRC
ZSgi4oKsIiwgYWN0dWFsM1szXS52YWx1ZSk7CisgICAgc2hvdWxkQmUoImVuZFJhbmdlIiwgYWN0
dWFsM1szXS5zb3VyY2UpOworICAgIHNob3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1s0XS50eXBl
KTsKKyAgICBzaG91bGRCZSgiNSIsIGFjdHVhbDNbNF0udmFsdWUpOworICAgIHNob3VsZEJlKCJl
bmRSYW5nZSIsIGFjdHVhbDNbNF0uc291cmNlKTsKK30KKworY29uc3QgbmY0ID0gbmV3IEludGwu
TnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHlsZTogImN1cnJlbmN5IiwKKyAgICBjdXJy
ZW5jeTogIkVVUiIsCisgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAwLAorfSk7CitpZiAobmY0
LmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKCJ+4oKsMyIsIG5mNC5mb3JtYXRSYW5nZSgyLjks
IDMuMSkpOworCitjb25zdCBuZjUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIiwgewor
ICAgIHN0eWxlOiAiY3VycmVuY3kiLAorICAgIGN1cnJlbmN5OiAiRVVSIiwKKyAgICBzaWduRGlz
cGxheTogImFsd2F5cyIsCit9KTsKK2lmIChuZjUuZm9ybWF0UmFuZ2UpCisgICAgc2hvdWxkQmUo
In4r4oKsMy4wMCIsIG5mNS5mb3JtYXRSYW5nZSgyLjk5OSwgMy4wMDEpKTsKKworY29uc3QgbmY2
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIpOworaWYgKG5mNi5mb3JtYXRSYW5nZSkgewor
ICAgIHNob3VsZEJlKCIz4oCT4oieIiwgbmY2LmZvcm1hdFJhbmdlKDMsIDEvMCkpOworICAgIHNo
b3VsZFRocm93KCgpID0+IHsgbmY2LmZvcm1hdFJhbmdlKDMsIDAvMCk7IH0sIFJhbmdlRXJyb3Ip
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0
LXN0cmluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1z
dHJpbmctdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZDkyZGMzMTAwNmUzMWQyOTlhZTg0OTAyODMyZWFh
MGM3MzU0NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LWZvcm1hdC1zdHJpbmctdjMuanMKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IDIw
MjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9IG5ldyBJbnRsLk51
bWJlckZvcm1hdCgiZW4tVVMiKTsKK2NvbnN0IHN0cmluZyA9ICI5ODc2NTQzMjE5ODc2NTQzMjEi
OworY29uc3Qgc3RyaW5nMiA9ICI5ODc2NTQzMjE5ODc2NTQzMjIiOworc2hvdWxkQmUobmYuZm9y
bWF0KHN0cmluZyksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5mLmZvcm1hdFJh
bmdlKQorICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKHN0cmluZywgc3RyaW5nMiksIGA5ODcs
NjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLmpzIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NzJmMTNiZGYzNzg2NGVlYmY4YzZkNzQyOTYxNTJiZjlhZWM1MDk1Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy5q
cwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitjb25zdCBuZiA9
IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiKTsKK3Nob3VsZEJlKG5mLmZvcm1hdCgiNTQu
MzIxIiksIGA1NC4zMjFgKTsKK2lmIChuZi5mb3JtYXRSYW5nZSkgeworICAgIHNob3VsZEJlKG5m
LmZvcm1hdFJhbmdlKCItNTQuMzIxIiwgIis1NC4zMjEiKSwgYC01NC4zMjEg4oCTIDU0LjMyMWAp
OworICAgIHNob3VsZEJlKG5mLmZvcm1hdFJhbmdlKCItNTQuMzIxIiwgIjIwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiksIGAtNTQuMzIxIOKAkyAyMCwwMDAsMDAwLDAw
MCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDBgKTsKKyAgICBzaG91bGRC
ZShuZi5mb3JtYXRSYW5nZSgiLTAiLCAiMCIpLCBgLTAg4oCTIDBgKTsKKyAgICBzaG91bGRCZShu
Zi5mb3JtYXRSYW5nZSgiLTAiLCAiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMCIpLCBgLTAg4oCTIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCww
MDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDBgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcwppbmRleCBlZjcxZjBmMWM2YzU0
MWRmYTliYzM0NDFhYTFiM2Y0MDdjZDVlODAzLi5jY2Y5N2VjMjQxNTZkZDJkNGQyYzlhMDVmMjQ0
YmM1YmQ4NjM2NDUwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC1mb3JtYXQtdG8tcGFydHMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtZm9ybWF0LXRvLXBhcnRzLmpzCkBAIC01NywzICs1NywzNSBAQCBmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CiBzaG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMn
LCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUp
Lmxlbmd0aCwgMSk7CiBzaG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHVzZUdy
b3VwaW5nOiBmYWxzZSB9KS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFMVUUpWzBdLnZhbHVl
Lmxlbmd0aCwgMzA5KTsKIHNob3VsZEJlKEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1h
dFRvUGFydHMoTnVtYmVyLk1BWF9WQUxVRSkubGVuZ3RoLCAyMDUpOworCitzaG91bGRCZSgKKyAg
ICBKU09OLnN0cmluZ2lmeSgKKyAgICAgICAgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJykuZm9y
bWF0VG9QYXJ0cyg0MDAwbikKKyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAg
eyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5cGUiOiJncm91cCIs
InZhbHVlIjoiLCJ9LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFsdWUiOiIwMDAifQor
ICAgIF0pKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisgICAgICAgIEludGwu
TnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoLTQwMDBuKQorICAgICksCisgICAg
SlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7InR5cGUiOiJtaW51c1NpZ24iLCJ2YWx1ZSI6Ii0i
fSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5
cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFs
dWUiOiIwMDAifQorICAgIF0pKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisg
ICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoIi00MDAwIikK
KyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBlIjoibWludXNTaWdu
IiwidmFsdWUiOiItIn0sCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2YWx1ZSI6IjQifSwK
KyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAgICAgeyJ0eXBlIjoi
aW50ZWdlciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gt
djMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1l
bnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIxZTY1NGVmOTg3NTZjOGQxZDc2
MWJhMjA5NTM2MDM3NDRhYzBjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC1yZXNvbHZlZC1tYXRjaC12My5qcwpA
QCAtMCwwICsxLDQxIEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3Rl
ZCk7Cit9CisKK2xldCB2YWxpZFJvdW5kaW5nSW5jcmVtZW50cyA9IFsKKyAgICAxLCA1LCAxMCwg
MjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAyNTAwLCA1MDAwCitd
OworCit2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nSW5j
cmVtZW50KSB7CisgICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
e3JvdW5kaW5nSW5jcmVtZW50fSk7CisgICAgc2hvdWxkQmUocm91bmRpbmdJbmNyZW1lbnQsIG5m
LnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nSW5jcmVtZW50KTsKK30pOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXYz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAzMmE5MzFhYzE0MTUyMmE4MjZmMDlhYzkwYThiY2ZkMGY0ZTgyMmMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3Vu
ZGluZy1pbmNyZW1lbnQtdjMuanMKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJy
b3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JU
eXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1l
fSFgKTsKK30KKworCitsZXQgdmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBbCisgICAgMSwgMiwg
NSwgMTAsIDIwLCA1MCwgMTAwLCA1MDAsIDEwMDAsIDUwMDAKK107CisKK2xldCBpbnZhbGlkUm91
bmRpbmdJbmNyZW1lbnRzID0gWworICAgIC0xLCAtNSwgMCwgMTAwMSwgMTEwMCwgNTUwMCwgMjAw
MDAwLCA1MDAwMDUsIDEwMDAwMDAwLCAxMDAwMCwgNTAwMDAsIDEwMDAwMCwgNTAwMDAwLCAxMDAw
MDAwLAorICAgIDUwMDAwMDAKK107CisKK3ZhbGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2go
ZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICBuZXcgSW50bC5OdW1iZXJGb3JtYXQo
dW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1lbnR9KTsKK30pOworCitpbnZhbGlkUm91bmRpbmdJ
bmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICBzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQs
IHtyb3VuZGluZ0luY3JlbWVudH0pCisgICAgfSwgUmFuZ2VFcnJvcik7Cit9KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12
YWx1ZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWlu
Y3JlbWVudC12YWx1ZS12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGYyNjhkOTg2YzE2ZTNmNDk3YWYzODQ1
OGZlZWQ4OTA5ZDI2NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzCkBAIC0wLDAgKzEsNDkg
QEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAg
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAg
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30K
KworbGV0IHBlbm55ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJlbiIsIHsgbWluaW11
bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5j
cmVtZW50OiAxIH0pOworbGV0IG5pY2tlbCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICAi
ZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAy
LCByb3VuZGluZ0luY3JlbWVudDogNSB9KTsKK2xldCBkaW1lID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KAorICAgICJlbiIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rp
b25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50OiAxMCB9KTsKKworLy8gaHR0cHM6Ly9uZWNz
LmNvbS9rbm93bGVkZ2ViYXNlL3N5c3ByZWZzX3ByY19tb2Rfcm91bmRtZXRoLmh0bQorc2hvdWxk
QmUoIjEwLjE1IiwgcGVubnkuZm9ybWF0KDEwLjE1NCkpOworc2hvdWxkQmUoIjEwLjE2IiwgcGVu
bnkuZm9ybWF0KDEwLjE1NSkpOworc2hvdWxkQmUoIjEwLjEwIiwgbmlja2VsLmZvcm1hdCgxMC4x
MjQpKTsKK3Nob3VsZEJlKCIxMC4xNSIsIG5pY2tlbC5mb3JtYXQoMTAuMTI1KSk7CitzaG91bGRC
ZSgiMTAuNDAiLCBkaW1lLmZvcm1hdCgxMC40NDQpKTsKKy8vIG1pc3Rha2UgaW4gdGhlIGFib3Zl
IHBhZ2UsIHRoZSByZXN1bHQgc2hvdWxkIGJlIDEwLjQwIG5vdCAxMC41MAorc2hvdWxkQmUoIjEw
LjQwIiwgZGltZS5mb3JtYXQoMTAuNDQ1KSk7CitzaG91bGRCZSgiMTAuNDAiLCBkaW1lLmZvcm1h
dCgxMC40NDUpKTsKK3Nob3VsZEJlKCIxMC41MCIsIGRpbWUuZm9ybWF0KDEwLjQ1KSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1l
bnQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1p
bmNyZW1lbnQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA0YjFhNmY0YTNjNjE3NTg3MGQyZjc0OGEy
MzEyZDg2ZjAyYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVt
YmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwg
KyAiICIgKyBleHBlY3RlZCk7Cit9CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVu
IiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDMsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywg
cm91bmRpbmdJbmNyZW1lbnQ6IDEwIH0pLmZvcm1hdCg1NTU1NTU1NTU1NS41NTU1NTUpLCBgNTUs
NTU1LDU1NSw1NTUuNTYwYCk7CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwg
eyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91
bmRpbmdJbmNyZW1lbnQ6IDEwMCB9KS5mb3JtYXQoNTU1NTU1NTU1NTUuNTU1NTU1KSwgYDU1LDU1
NSw1NTUsNTU2LjAwYCk7CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNCwgcm91bmRp
bmdJbmNyZW1lbnQ6IDEwMDAgfSkuZm9ybWF0KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUs
NTU1LDU1NS42MDAwYCk7CitzaG91bGRCZShuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRp
bmdJbmNyZW1lbnQ6IDEwMDAgfSkuZm9ybWF0KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUs
NTU1LDU2MC4wMGApOworc2hvdWxkQmUobmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsIHsgbWlu
aW11bUZyYWN0aW9uRGlnaXRzOiAxLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEsIHJvdW5kaW5n
SW5jcmVtZW50OiAxMDAwIH0pLmZvcm1hdCg1NTU1NTU1NTU1NS41NTU1NTUpLCBgNTUsNTU1LDU1
NSw2MDAuMGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQt
cm91bmRpbmctbW9kZS10YWJsZS12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRjZjlhMzAzZjQ1NTVh
MWMyZmU5ZjNlMDZkMmMyZjhmMWQ3Mjk4OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdGFibGUtdjMuanMKQEAgLTAsMCAr
MSw2MSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
Ly8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsg
ZXhwZWN0ZWQgKyAiICIgKyBtZXNzYWdlKTsKK30KKworLy8gQ2hlY2sgdGhlIHJvdW5kaW5nIGJl
aGF2aW9yLgorLy8gQmFzZWQgb24gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVy
Zm9ybWF0LXYzL291dC9udW1iZXJmb3JtYXQvZGlmZi5odG1sI3RhYmxlLWludGwtcm91bmRpbmct
bW9kZXMKK2xldCBpbnB1dHMgPSBbLTEuNSwgMC40LCAwLjUsIDAuNiwgMS41XTsKK2xldCBleHBl
Y3RhdGlvbnMgPSB7CisgICAgImNlaWwiOiAgICAgICBbIi0xIiwgIjEiLCAiMSIsICIxIiwgIjIi
XSwKKyAgICAiZmxvb3IiOiAgICAgIFsiLTIiLCAiMCIsICIwIiwgIjAiLCAiMSJdLAorICAgICJl
eHBhbmQiOiAgICAgWyItMiIsICIxIiwgIjEiLCAiMSIsICIyIl0sCisgICAgInRydW5jIjogICAg
ICBbIi0xIiwgIjAiLCAiMCIsICIwIiwgIjEiXSwKKyAgICAiaGFsZkNlaWwiOiAgIFsiLTEiLCAi
MCIsICIxIiwgIjEiLCAiMiJdLAorICAgICJoYWxmRmxvb3IiOiAgWyItMiIsICIwIiwgIjAiLCAi
MSIsICIxIl0sCisgICAgImhhbGZFeHBhbmQiOiBbIi0yIiwgIjAiLCAiMSIsICIxIiwgIjIiXSwK
KyAgICAiaGFsZlRydW5jIjogIFsiLTEiLCAiMCIsICIwIiwgIjEiLCAiMSJdLAorICAgICJoYWxm
RXZlbiI6ICAgWyItMiIsICIwIiwgIjAiLCAiMSIsICIyIl0sCit9OworT2JqZWN0LmtleXMoZXhw
ZWN0YXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uKHJvdW5kaW5nTW9kZSkgeworICAgIGxldCBleHAg
PSBleHBlY3RhdGlvbnNbcm91bmRpbmdNb2RlXTsKKyAgICBsZXQgaWR4ID0gMDsKKyAgICBsZXQg
bmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwge3JvdW5kaW5nTW9kZSwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAwfSk7CisgICAgc2hvdWxkQmUocm91bmRpbmdNb2RlLCBuZi5yZXNvbHZl
ZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpOworICAgIGlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGlu
cHV0KSB7CisgICAgICAgIGxldCBtc2cgPSAiaW5wdXQ6ICIgKyBpbnB1dCArICIgd2l0aCByb3Vu
ZGluZ01vZGU6ICIgKyByb3VuZGluZ01vZGU7CisgICAgICAgIGlmICgkdm0uaWN1VmVyc2lvbigp
ID49IDY5KQorICAgICAgICAgICAgc2hvdWxkQmUoZXhwW2lkeCsrXSwgbmYuZm9ybWF0KGlucHV0
KSwgbXNnKTsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdNb2RlICE9PSAiaGFsZkNlaWwiICYm
IHJvdW5kaW5nTW9kZSAhPT0gImhhbGZGbG9vciIpCisgICAgICAgICAgICBzaG91bGRCZShleHBb
aWR4KytdLCBuZi5mb3JtYXQoaW5wdXQpLCBtc2cpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZi5mb3JtYXQoaW5wdXQpIC8vIHNob3VsZCBub3QgdGhyb3cuCisgICAgfSkKK30pOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12
My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzkxN2E2YjkzNjM3MDIzNmFmYmM3ZWZjYjkxOTE3ZDU5OTAzMGM0Ygot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5k
aW5nLW1vZGUtdjMuanMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qg
dGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwor
bGV0IHZhbGlkUm91bmRpbmdNb2RlID0gWworICAgICJjZWlsIiwKKyAgICAiZmxvb3IiLAorICAg
ICJleHBhbmQiLAorICAgICJoYWxmQ2VpbCIsCisgICAgImhhbGZFeHBhbmQiLAorICAgICJoYWxm
Rmxvb3IiLAorICAgICJoYWxmVHJ1bmMiLAorICAgICJoYWxmRXZlbiIsCisgICAgInRydW5jIiwK
K107CisKK2xldCBpbnZhbGlkUm91bmRpbmdNb2RlID0gWworICAgICJjZWlsaW5nIiwKKyAgICAi
ZG93biIsCisgICAgIkRvd24iLAorICAgICJmbG9vcmluZyIsCisgICAgImhhbGZEb3duIiwKKyAg
ICAiaGFsZlVwIiwKKyAgICAiaGFsZnVwIiwKKyAgICAiaGFsZmV2ZW4iLAorICAgICJoYWxmZG93
biIsCisgICAgImhhbGYtdXAiLAorICAgICJoYWxmLWV2ZW4iLAorICAgICJoYWxmLWRvd24iLAor
ICAgICJ1cCIsCisgICAgIlVwIiwKK107CisKK3ZhbGlkUm91bmRpbmdNb2RlLmZvckVhY2goZnVu
Y3Rpb24ocm91bmRpbmdNb2RlKSB7CisgICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0
KHVuZGVmaW5lZCwge3JvdW5kaW5nTW9kZX0pOworICAgIHNob3VsZEJlKHJvdW5kaW5nTW9kZSwg
bmYucmVzb2x2ZWRPcHRpb25zKCkucm91bmRpbmdNb2RlKTsKK30pOworCitpbnZhbGlkUm91bmRp
bmdNb2RlLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdNb2RlKSB7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4geworICAgICAgICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVk
LCB7cm91bmRpbmdNb2RlfSk7IH0sIGBSYW5nZUVycm9yOiByb3VuZGluZ01vZGUgbXVzdCBiZSBl
aXRoZXIgImNlaWwiLCAiZmxvb3IiLCAiZXhwYW5kIiwgInRydW5jIiwgImhhbGZDZWlsIiwgImhh
bGZGbG9vciIsICJoYWxmRXhwYW5kIiwgImhhbGZUcnVuYyIsIG9yICJoYWxmRXZlbiJgKTsKK30p
OworCisvLyBDaGVjayBkZWZhdWx0IGlzICJoYWxmRXhwYW5kIgorc2hvdWxkQmUoImhhbGZFeHBh
bmQiLCAobmV3IEludGwuTnVtYmVyRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkucm91bmRpbmdN
b2RlKSk7CitzaG91bGRCZSgiaGFsZkV4cGFuZCIsIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisg
ICAgdW5kZWZpbmVkLCB7cm91bmRpbmdNb2RlOiB1bmRlZmluZWR9KS5yZXNvbHZlZE9wdGlvbnMo
KS5yb3VuZGluZ01vZGUpKTsKKworLy8gQ2hlY2sgcm91bmRpbmdNb2RlIGlzIHJlYWQgb25jZSBh
ZnRlciByZWFkaW5nIHNpZ25EaXNwbGF5CisKK2xldCByZWFkID0gW107CitsZXQgb3B0aW9ucyA9
IHsKKyAgICBnZXQgc2lnbkRpc3BsYXkoKSB7IHJlYWQucHVzaCgnc2lnbkRpc3BsYXknKTsgcmV0
dXJuIHVuZGVmaW5lZDsgfSwKKyAgICBnZXQgcm91bmRpbmdNb2RlKCkgeyByZWFkLnB1c2goJ3Jv
dW5kaW5nTW9kZScpOyByZXR1cm4gdW5kZWZpbmVkOyB9LAorfTsKKworbmV3IEludGwuTnVtYmVy
Rm9ybWF0KHVuZGVmaW5lZCwgb3B0aW9ucyk7CitzaG91bGRCZSgic2lnbkRpc3BsYXkscm91bmRp
bmdNb2RlIiwgcmVhZC5qb2luKCIsIikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtc2lnbi1kaXNwbGF5LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMWM4NTEzYWI4YTU2
NzIwOGYwODE4MzUwZWU5ZGRjM2Y2ODYzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1zaWduLWRpc3BsYXktdjMuanMKQEAgLTAsMCArMSw1NiBA
QAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAg
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQor
CisvLyBUZXN0IGRlZmF1bHQuCitsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKTsKK3No
b3VsZEJlKCJhdXRvIiwgbmYucmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRpc3BsYXkpOworCituZiA9
IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iKTsKK3Nob3VsZEJlKCJhdXRvIiwgbmYucmVzb2x2
ZWRPcHRpb25zKCkuc2lnbkRpc3BsYXkpOworCitjb25zdCB0ZXN0RGF0YSA9IFsKKyAgICBbImF1
dG8iLCAgICAgICAgIi0xMjMiLCAgIi0wIiwgICIwIiwgICIxMjMiXSwKKyAgICBbImFsd2F5cyIs
ICAgICAgIi0xMjMiLCAgIi0wIiwgIiswIiwgIisxMjMiXSwKKyAgICBbIm5ldmVyIiwgICAgICAg
IjEyMyIsICAgIjAiLCAgIjAiLCAgIjEyMyJdLAorICAgIFsiZXhjZXB0WmVybyIsICAiLTEyMyIs
ICAiMCIsICAiMCIsICAiKzEyMyJdLAorICAgIFsibmVnYXRpdmUiLCAgICAiLTEyMyIsICAiMCIs
ICAiMCIsICAiMTIzIl0sCitdOworCitmb3IgKGNvbnN0IFtzaWduRGlzcGxheSwgbmVnLCBuZWda
ZXJvLCB6ZXJvLCBwb3NdIG9mIHRlc3REYXRhKSB7CisgICAgbmYgPSBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoImVuIiwge3NpZ25EaXNwbGF5fSk7CisgICAgc2hvdWxkQmUoc2lnbkRpc3BsYXksIG5m
LnJlc29sdmVkT3B0aW9ucygpLnNpZ25EaXNwbGF5KTsKKyAgICBzaG91bGRCZShuZWcsIG5mLmZv
cm1hdCgtMTIzKSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgIHNo
b3VsZEJlKG5lZ1plcm8sIG5mLmZvcm1hdCgtMCkpOworICAgIHNob3VsZEJlKHplcm8sIG5mLmZv
cm1hdCgwKSk7CisgICAgc2hvdWxkQmUocG9zLCBuZi5mb3JtYXQoMTIzKSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRpc3Bs
YXktcmVzb2x2ZWQtb3B0aW9ucy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc0MTM1NTEzNmEzOTI0NWU2OTczYjE2NDIyYWJlMjBmMDNjYjZhNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJvLWRp
c3BsYXktcmVzb2x2ZWQtb3B0aW9ucy12My5qcwpAQCAtMCwwICsxLDQ1IEBACisvLyBDb3B5cmln
aHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8v
ICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8g
ICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCBkZWZhdWx0
Rm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25E
aWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTsKK2xldCBhdXRvRm10ID0gbmV3
IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIs
IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAgdHJhaWxpbmdaZXJvRGlzcGxheTog
J2F1dG8nfSk7CitsZXQgc3RyaXBJZkludGVnZXJGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQo
ImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGln
aXRzOiAyLAorICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnc3RyaXBJZkludGVnZXInfSk7
CisKK3Nob3VsZEJlKCJhdXRvIiwgZGVmYXVsdEZtdC5yZXNvbHZlZE9wdGlvbnMoKS50cmFpbGlu
Z1plcm9EaXNwbGF5KTsKK3Nob3VsZEJlKCJhdXRvIiwgYXV0b0ZtdC5yZXNvbHZlZE9wdGlvbnMo
KS50cmFpbGluZ1plcm9EaXNwbGF5KTsKK3Nob3VsZEJlKCJzdHJpcElmSW50ZWdlciIsCisgICAg
c3RyaXBJZkludGVnZXJGbXQucmVzb2x2ZWRPcHRpb25zKCkudHJhaWxpbmdaZXJvRGlzcGxheSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16
ZXJvLWRpc3BsYXktdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFp
bGluZy16ZXJvLWRpc3BsYXktdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVmMmIxZDFjYTJjODc3ZWU4YWNi
ZTgxZDU5MDI1ODgxNmM5NmIwMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS12My5qcwpAQCAtMCwwICsxLDU2
IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAg
ICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAg
ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9
CisKK2xldCBkZWZhdWx0Rm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBt
aW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTsKK2xl
dCBhdXRvRm10ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbiIsCisgICAgeyBtaW5pbXVtRnJh
Y3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwKKyAgICAgICAgdHJhaWxp
bmdaZXJvRGlzcGxheTogJ2F1dG8nfSk7CitsZXQgc3RyaXBJZkludGVnZXJGbXQgPSBuZXcgSW50
bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4
aW11bUZyYWN0aW9uRGlnaXRzOiAyLAorICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnc3Ry
aXBJZkludGVnZXInfSk7CisKK3Nob3VsZEJlKCIzLjE0IiwgZGVmYXVsdEZtdC5mb3JtYXQoMy4x
NDExKSk7CitzaG91bGRCZSgiMy4xNCIsIGF1dG9GbXQuZm9ybWF0KDMuMTQxMSkpOworc2hvdWxk
QmUoIjMuMTQiLCBzdHJpcElmSW50ZWdlckZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgi
My4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitzaG91bGRCZSgiMy4wMCIsIGF1
dG9GbXQuZm9ybWF0KDMuMDAxNDExKSk7CitpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2OSkKKyAg
ICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgzLjAwMTQxMSkpOworZWxz
ZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDMuMDAxNDEx
KSk7CitzaG91bGRCZSgiMy4wMCIsIGRlZmF1bHRGbXQuZm9ybWF0KDIuOTk5NDExKSk7CitzaG91
bGRCZSgiMy4wMCIsIGF1dG9GbXQuZm9ybWF0KDIuOTk5NDExKSk7CitpZiAoJHZtLmljdVZlcnNp
b24oKSA+PSA2OSkKKyAgICBzaG91bGRCZSgiMyIsIHN0cmlwSWZJbnRlZ2VyRm10LmZvcm1hdCgy
Ljk5OTQxMSkpOworZWxzZQorICAgIHNob3VsZEJlKCIzLjAwIiwgc3RyaXBJZkludGVnZXJGbXQu
Zm9ybWF0KDIuOTk5NDExKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC11c2Vncm91cGluZy12My5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9y
bWF0LXVzZWdyb3VwaW5nLXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4YzdmYWM4OTYwZWI5NjJlM2I2ZDlm
MzM0OGIzYWJmMGY2YzA4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC11c2Vncm91cGluZy12My5qcwpAQCAtMCwwICsxLDE1NSBAQAorLy8gQ29w
eXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
CisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
Ky8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qg
dGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwor
bGV0IHZhbGlkVXNlR3JvdXBpbmcgPSBbCisgICAgIm1pbjIiLAorICAgICJhdXRvIiwKKyAgICAi
YWx3YXlzIiwKKyAgICBmYWxzZSwKK107CisKK2xldCBpbnZhbGlkVXNlR3JvdXBpbmcgPSBbCisg
ICAgIm1pbi0yIiwKKyAgICAidHJ1ZSIsCitdOworCit2YWxpZFVzZUdyb3VwaW5nLmZvckVhY2go
ZnVuY3Rpb24odXNlR3JvdXBpbmcpIHsKKyAgICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmd9KTsKKyAgICBzaG91bGRCZSh1c2VHcm91cGluZywg
bmYucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworfSk7CisKK2ludmFsaWRVc2VHcm91
cGluZy5mb3JFYWNoKGZ1bmN0aW9uKHVzZUdyb3VwaW5nKSB7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7
dXNlR3JvdXBpbmd9KTsgfSwgYFJhbmdlRXJyb3I6IHVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVy
IHRydWUsIGZhbHNlLCAibWluMiIsICJhdXRvIiwgb3IgImFsd2F5cyJgKTsKK30pOworCisvLyB1
c2VHcm91cGluZzogdW5kZWZpbmVkIGdldCAiYXV0byIKK3Nob3VsZEJlKCJhdXRvIiwKKyAgICAo
bmV3IEludGwuTnVtYmVyRm9ybWF0KCkpLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsK
K3Nob3VsZEJlKCJhdXRvIiwKKyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
e3VzZUdyb3VwaW5nOiB1bmRlZmluZWR9KSkKKyAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3Jv
dXBpbmcpOworCisvLyB1c2VHcm91cGluZzogdHJ1ZSBnZXQgImFsd2F5cyIKK3Nob3VsZEJlKCJh
bHdheXMiLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBp
bmc6IHRydWV9KSkKKyAgICAucmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworCisvLyB1
c2VHcm91cGluZzogZmFsc2UgZ2V0IGZhbHNlCisvLyB1c2VHcm91cGluZzogIiIgZ2V0IGZhbHNl
CitzaG91bGRCZShmYWxzZSwKKyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwg
e3VzZUdyb3VwaW5nOiBmYWxzZX0pKQorICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGlu
Zyk7CitzaG91bGRCZShmYWxzZSwKKyAgICAobmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5l
ZCwge3VzZUdyb3VwaW5nOiAiIn0pKQorICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGlu
Zyk7CisKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11bUdyb3VwaW5nRGlnaXRz
CitsZXQgbWdkMSA9IFsiZW4iXTsKKy8vIFNvbWUgbG9jYWxlcyB3aXRoIGRlZmF1bHQgbWluaW11
bUdyb3VwaW5nRGlnaXRzeyIyIn0KK2xldCBtZ2QyID0gWyJlcyIsICJwbCIsICJsdiIsICJldCIs
ICJiZyJdOworbGV0IGFsbCA9IG1nZDEuY29uY2F0KG1nZDIpOworCisvLyBDaGVjayAiYWx3YXlz
IgorYWxsLmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgICAgbGV0IG9mZiA9IG5ldyBJbnRs
Lk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogZmFsc2V9KTsKKyAgICBsZXQgbXNn
ID0gImxvY2FsZTogIiArIGxvY2FsZSArICIgdXNlR3JvdXBpbmc6IGZhbHNlIjsKKyAgICAvLyBJ
biB1c2VHcm91cGluZzogZmFsc2UsIG5vIGdyb3VwaW5nLgorICAgIHNob3VsZEJlKDMsIG9mZi5m
b3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNCwgb2ZmLmZvcm1hdCgxMjM0
KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNSwgb2ZmLmZvcm1hdCgxMjM0NSkubGVuZ3Ro
LCBtc2cpOworICAgIHNob3VsZEJlKDYsIG9mZi5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7
CisgICAgc2hvdWxkQmUoNywgb2ZmLmZvcm1hdCgxMjM0NTY3KS5sZW5ndGgsIG1zZyk7Cit9KTsK
KworLy8gQ2hlY2sgZmFsc2UKK2FsbC5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICAgIGxl
dCBhbHdheXMgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJh
bHdheXMifSk7CisgICAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3Vw
aW5nOiAnYWx3YXlzJyI7CisgICAgc2hvdWxkQmUoMywgYWx3YXlzLmZvcm1hdCgxMjMpLmxlbmd0
aCk7CisgICAgLy8gSW4gdXNlR3JvdXBpbmc6ICJhbHdheXMiLCBoYXMgZ3JvdXBpbmcgd2hlbiBt
b3JlIHRoYW4gMyBkaWdpdHMuLgorICAgIHNob3VsZEJlKDQgKyAxLCBhbHdheXMuZm9ybWF0KDEy
MzQpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg1ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0
NSkubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1
NikubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJlKDcgKyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1
NjcpLmxlbmd0aCwgbXNnKTsKK30pOworCisvLyBDaGVjayAibWluMiIKK2FsbC5mb3JFYWNoKGZ1
bmN0aW9uKGxvY2FsZSkgeworICAgIGxldCBhbHdheXMgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQo
bG9jYWxlLCB7dXNlR3JvdXBpbmc6ICJtaW4yIn0pOworICAgIGxldCBtc2cgPSAibG9jYWxlOiAi
ICsgbG9jYWxlICsgIiB1c2VHcm91cGluZzogJ21pbjInIjsKKyAgICBzaG91bGRCZSgzLCBhbHdh
eXMuZm9ybWF0KDEyMykubGVuZ3RoKTsKKyAgICAvLyBJbiB1c2VHcm91cGluZzogIm1pbjIiLCBu
byBncm91cGluZyBmb3IgNCBkaWdpdHMgYnV0IGhhcyBncm91cGluZworICAgIC8vIHdoZW4gbW9y
ZSB0aGFuIDQgZGlnaXRzLi4KKyAgICBzaG91bGRCZSg0LCBhbHdheXMuZm9ybWF0KDEyMzQpLmxl
bmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg1ICsgMSwgYWx3YXlzLmZvcm1hdCgxMjM0NSkubGVu
Z3RoLCBtc2cpOworICAgIHNob3VsZEJlKDYgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1NikubGVu
Z3RoLCBtc2cpOworICAgIHNob3VsZEJlKDcgKyAyLCBhbHdheXMuZm9ybWF0KDEyMzQ1NjcpLmxl
bmd0aCwgbXNnKTsKK30pOworCisvLyBDaGVjayAiYXV0byIKK21nZDEuZm9yRWFjaChmdW5jdGlv
bihsb2NhbGUpIHsKKyAgICBsZXQgYXV0byA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUs
IHt1c2VHcm91cGluZzogImF1dG8ifSk7CisgICAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2Nh
bGUgKyAiIHVzZUdyb3VwaW5nOiAnYXV0byciOworICAgIHNob3VsZEJlKDMsIGF1dG8uZm9ybWF0
KDEyMykubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJlKDQgKyAxLCBhdXRvLmZvcm1hdCgxMjM0
KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNSArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1KS5s
ZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNiArIDEsIGF1dG8uZm9ybWF0KDEyMzQ1NikubGVu
Z3RoLCBtc2cpOworICAgIHNob3VsZEJlKDcgKyAyLCBhdXRvLmZvcm1hdCgxMjM0NTY3KS5sZW5n
dGgsIG1zZyk7Cit9KTsKK21nZDIuZm9yRWFjaChmdW5jdGlvbihsb2NhbGUpIHsKKyAgICBsZXQg
YXV0byA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImF1dG8i
fSk7CisgICAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5nOiAn
YXV0byciOworICAgIHNob3VsZEJlKDMsIGF1dG8uZm9ybWF0KDEyMykubGVuZ3RoLCBtc2cpOwor
ICAgIC8vIEluIHVzZUdyb3VwaW5nOiAiYXV0byIsIHNpbmNlIHRoZXNlIGxvY2FsZXMgaGFzCisg
ICAgLy8gbWluaW11bUdyb3VwaW5nRGlnaXRzeyIyIn0sIG5vIGdyb3VwaW5nIGZvciA0IGRpZ2l0
cyBidXQgaGFzIGdyb3VwaW5nCisgICAgLy8gd2hlbiBtb3JlIHRoYW4gNCBkaWdpdHMuLgorICAg
IHNob3VsZEJlKDQsIGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRC
ZSg1ICsgMSwgYXV0by5mb3JtYXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg2
ICsgMSwgYXV0by5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNyAr
IDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC5qcwppbmRleCA4NTM5YzkzYjVhY2FkNjZmMGFlYmNiZmQ1NThhNWU1MzEw
MjY0YmM1Li4zYzMwMWY1NzhhNWRiOTMxNzQxMTYyMTkwMGZkNGQ3MWE1YTY1NWQ1IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAtNTMsOSArNTMsMTMgQEAgZnVuY3Rpb24gdGVz
dE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICAg
ICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMywKICAgICAgICAgICAgIG1pbmltdW1TaWdu
aWZpY2FudERpZ2l0czogdW5kZWZpbmVkLAogICAgICAgICAgICAgbWF4aW11bVNpZ25pZmljYW50
RGlnaXRzOiB1bmRlZmluZWQsCi0gICAgICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSwKKyAgICAg
ICAgICAgIHVzZUdyb3VwaW5nOiAiYXV0byIsCiAgICAgICAgICAgICBub3RhdGlvbjogInN0YW5k
YXJkIiwKLSAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAiYXV0byIKKyAgICAgICAgICAgIHNpZ25E
aXNwbGF5OiAiYXV0byIsCisgICAgICAgICAgICByb3VuZGluZ01vZGU6ICJoYWxmRXhwYW5kIiwK
KyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50OiAxLAorICAgICAgICAgICAgdHJhaWxpbmda
ZXJvRGlzcGxheTogImF1dG8iLAorICAgICAgICAgICAgcm91bmRpbmdQcmlvcml0eTogImF1dG8i
LAogICAgICAgICB9OwogICAgICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBkaWZm
ZXJlbmNlKTsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRPcHRpb25zKTsK
QEAgLTE4NCw5ICsxODgsOSBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1h
dCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJG
b3JtYXQoJ2VuJywge21heGltdW1TaWduaWZpY2FudERpZ2l0czogMjJ9KSwgUmFuZ2VFcnJvcik7
CiAKIC8vIFRoZSBvcHRpb24gdXNlR3JvdXBpbmcgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4KLXNo
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3Vw
aW5nOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdlbicsIHt1c2VH
cm91cGluZzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6ICJhbHdheXMifV0p
LCB0cnVlKTsKIHNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2Vu
Jywge3VzZUdyb3VwaW5nOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuJywgdXNlR3JvdXBpbmc6IGZh
bHNlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3Jt
YXQoJ2VuJywge3VzZUdyb3VwaW5nOiAnZmFsc2UnfSksIFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91
cGluZzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHt1c2VHcm91cGluZzogJ21pbjInfSksIFt7bG9jYWxlOiAnZW4nLCB1
c2VHcm91cGluZzogIm1pbjIifV0pLCB0cnVlKTsKIHNob3VsZFRocm93KCgpID0+IEludGwuTnVt
YmVyRm9ybWF0KCdlbicsIHsgZ2V0IHVzZUdyb3VwaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9KSwgRXJyb3IpOwogCiAvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9y
bWF0IENvbnN0cnVjdG9yCkBAIC00MzUsNyArNDM5LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZv
cm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIHsKICAgICBsZXQgb3B0
aW9ucyA9IGRlZmF1bHRORm9ybWF0LnJlc29sdmVkT3B0aW9ucygpOwogICAgIGRlbGV0ZSBvcHRp
b25zLmxvY2FsZTsgCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucyksICd7Im51
bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRp
Z2l0cyI6MSwibWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMi
OjMsInVzZUdyb3VwaW5nIjp0cnVlLCJub3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXki
OiJhdXRvIn0nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgYHsibnVt
YmVyaW5nU3lzdGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGln
aXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6
MywidXNlR3JvdXBpbmciOiJhdXRvIiwibm90YXRpb24iOiJzdGFuZGFyZCIsInNpZ25EaXNwbGF5
IjoiYXV0byIsInJvdW5kaW5nTW9kZSI6ImhhbGZFeHBhbmQiLCJyb3VuZGluZ0luY3JlbWVudCI6
MSwidHJhaWxpbmdaZXJvRGlzcGxheSI6ImF1dG8iLCJyb3VuZGluZ1ByaW9yaXR5IjoiYXV0byJ9
YCk7CiB9CiAKIC8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zY2ZkZTc4ZWFiMTI1MzI3ZGQwZDMyOTZiZDI2ZWI3YWQxZGZlY2NiCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy1zZWxlY3RyYW5nZS5qcwpAQCAt
MCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitpZiAo
SW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UpIHsKKyAgICBjb25zdCBwbCA9
IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKCJzbCIpOworICAgIHNob3VsZEJlKCJmZXciLCBwbC5zZWxl
Y3RSYW5nZSgxMDIsIDIwMSkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDk2MmQ1MjQ2MjUyNWFm
YmIyOTZkOWFjZmQ2ZDhhMGExNDRmMjBiMzQuLjI4ZTQ3MTIxNWMwYjJlNWY3M2VlMTlhNTJmYThk
YzU3Y2ZlOTY4OWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTEwMSw2ICsxMDEsMTIgQEAgc2tpcDoK
ICAgICAjIGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIxMzY3
CiAgICAgLSB0ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0
LWNhbm9uaWNhbGl6ZS15ZXMtdG8tdHJ1ZS5qcwogCisgICAgIyBJbnRsLk51bWJlckZvcm1hdCB2
MyBjaGFuZ2VzIHRoZSBiZWhhdmlvci4KKyAgICAtIHRlc3QvaW50bDQwMi9QbHVyYWxSdWxlcy9w
cm90b3R5cGUvcmVzb2x2ZWRPcHRpb25zL29yZGVyLmpzCisgICAgLSB0ZXN0L2ludGw0MDIvTnVt
YmVyRm9ybWF0L3Byb3RvdHlwZS9yZXNvbHZlZE9wdGlvbnMvYmFzaWMuanMKKyAgICAtIHRlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL3Jlc29sdmVkT3B0aW9ucy9vcmRlci5qcwor
ICAgIC0gdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC90ZXN0LW9wdGlvbi11c2VHcm91cGluZy5q
cworCiAgICAgIyBGYWlsaW5nIGJlY2F1c2Ugd2UgYXJlIGJ1aWxkaW5nIFdlYktpdCB3aXRoIHZl
cnkgb2xkIElDVSBoZWFkZXJzCiAgICAgLSB0ZXN0L2ludGw0MDIvTGlzdEZvcm1hdC9jb25zdHJ1
Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLWludmFsaWQuanMKICAgICAtIHRlc3QvaW50bDQwMi9M
aXN0Rm9ybWF0L2NvbnN0cnVjdG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442558</attachid>
            <date>2021-10-26 19:46:19 -0700</date>
            <delta_ts>2021-10-27 00:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215438-20211026194619.patch</filename>
            <type>text/plain</type>
            <size>158030</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
M2RmMWNhN2Y3OWUwNWE3MjQyZmIxNjUxMzhhNDU5Mjc3ZTA3ZThiLi5kYWRhYzEyNTZiNDhkYTg3
NDRjMzhhNWU3YzUxNDNmODM1NjY5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBJbnRsTnVtYmVyRm9ybWF0IHYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgcGFydCBvZiBJbnRsLk51bWJlckZvcm1hdCB2MyBwcm9wb3NhbFsxXS4KKyAgICAgICAg
SXQgYWRkcyAoMSkgc2V2ZXJhbCBuZXcgb3B0aW9ucyB0byBJbnRsLk51bWJlckZvcm1hdCwgKDIp
IGFkZHMKKyAgICAgICAgZm9ybWF0UmFuZ2UgYW5kIGZvcm1hdFJhbmdlVG9QYXJ0cyB0byBJbnRs
Lk51bWJlckZvcm1hdCBhbmQgSW50bC5QbHVyYWxSdWxlcywKKyAgICAgICAgYW5kICgzKSBhZGRz
IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlIHN1cHBvcnQsIHdoaWNoIGFsbG93cyBzb21lIG9mIElu
dGwuTnVtYmVyRm9ybWF0CisgICAgICAgIGZ1bmN0aW9ucyB0byB0YWtlICJzdHJpbmciIGRlY2lt
YWwgZm9ybS4KKworICAgICAgICBXZSBjYW5ub3QgaW1wbGVtZW50IHNvbWUgZmVhdHVyZXMgYmVj
YXVzZSBpdCByZXF1aXJlcyBzdXBlciBuZXcgSUNVLgorCisgICAgICAgICAgICAtIHRyYWlsaW5n
WmVyb0Rpc3BsYXkgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gaGFsZkNlaWwgLyBo
YWxmRmxvb3IgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gc2lnbkRpc3BsYXk6ICJu
ZWdhdGl2ZSIgKHJlcXVpcmVzIElDVSA2OSkKKyAgICAgICAgICAgIC0gZm9ybWF0UmFuZ2VUb1Bh
cnRzIChyZXF1aXJlcyBJQ1UgNzApCisKKyAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20v
dGMzOS9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12MworCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAg
IChKU0M6OlVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpT
Qzo6VU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5p
dGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdCBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cm91bmRpbmdQcmlvcml0eVN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpJbnRsTWF0aGVtYXRpY2FsVmFsdWUpOgorICAgICAgICAoSlND
OjpJbnRsTWF0aGVtYXRpY2FsVmFsdWU6OmVuc3VyZU5vbkRvdWJsZSk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGxNYXRoZW1hdGljYWxWYWx1ZTo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxN
YXRoZW1hdGljYWxWYWx1ZTo6dHJ5R2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpnZXRTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRs
TWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnNldE51bWJlckZv
cm1hdERpZ2l0T3B0aW9ucyk6CisgICAgICAgIChKU0M6OmFwcGVuZE51bWJlckZvcm1hdERpZ2l0
T3B0aW9uc1RvU2tlbGV0b24pOgorICAgICAgICAoSlNDOjp0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6aW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpVUGx1cmFs
UnVsZXNEZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
Ojppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
c2VsZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5n
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OkpTQmlnSW50
Ojp0cnlFeHRyYWN0RG91YmxlKToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAg
ICAgICAgKEpTQzo6aXNOZWdhdGl2ZVplcm8pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyb3VuZE51bWJlclRvSW5jcmVtZW50KToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisKIDIwMjEtMTAtMjYgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjg0MjU1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYzU2YzEwZWFh
MGU0ZjA2YTJlMzBlM2FhYjY0NmEwZjBkYmI2OGM4Li42ODUzNDc0NmQwYTg4M2VkZDRiNDUwZDU4
ZWU4NTg1YWU3ZDM4ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg0NSw2
ICsxODQ1LDcgQEAKIAkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJDMjQ1QTND
RkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJRTMwNzE3OEUy
NEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9j
YWxlLmggKi87IH07CisJCUUzMDg3M0U3MjcyNTU5NDEwMDUzQjYwMSAvKiBJbnRsUGx1cmFsUnVs
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1
RkIxOEYyMDc0NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgKi87IH07CiAJCUUz
MEU4QTU0MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE0RTI2REUy
RTQ3MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovOyB9OwogCQlFMzBF
OEE1NjI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNTAyNkRFMkU0ODAwREE0OTE1
IC8qIFRlbXBvcmFsVGltZVpvbmUuaCAqLzsgfTsKIAkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1
IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oICovOyB9OwpAQCAtMTkxNiw2ICsxOTE3LDcgQEAKIAkJ
RTM3MTE5OTIyNTNGQTg3RjAwQkE2OUEwIC8qIEdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3
NDE2NkUyNjkxMkJDNzAwQzgwNzg5IC8qIE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NDE2NkQyNjkxMkJD
NzAwQzgwNzg5IC8qIE9iamVjdENvbnN0cnVjdG9ySW5saW5lcy5oICovOyB9OwogCQlFMzc1MEND
ODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAyRTg3RTAw
NkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsgfTsKKwkJRTM3OERDOEQy
NzI3NjI5NDAwNDI3QjBCIC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXQuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBB
MjM5MEQ5M0IwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUds
b2JhbC5oICovOyB9OwogCQlFMzg1MEIxNTIyNkVENjQxMDA5QUJGOUMgLyogREZHTWluaWZpZWRJ
RElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oICovOyB9
OwpAQCAtMTE4MzIsNiArMTE4MzQsOCBAQAogCQkJCTVDNDE5NjYyMjI3MEUwMDAwMDQ3QjdDRCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRlVGltZUZvcm1hdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3NkYgLyogSW50bExp
c3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM3OERDOEQyNzI3NjI5NDAwNDI3QjBC
IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMwODczRTcyNzI1
NTk0MTAwNTNCNjAxIC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
M0VFODU0MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM4RTg3OTAyNTRCOTc4NDAwRjZGOUU0IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
ZGQ4Y2I2MjcyNDFiZTg4Y2VlZjA3NDU5Yzg1ZWYzYzhhOWY4YzgzNy4uODY0YWQzYWQ3MzBmYmY0
NDcxYTNjMzJkNzI2Y2E5MzlhZGUwYmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtODM1LDExICs4MzUsMTEgQEAgcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvSW50bExvY2FsZS5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNw
cAogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAotcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcAorcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBAbm8tdW5pZnkgLy8gQ29uZmlu
ZSBVX0hJREVfRFJBRlRfQVBJJ3MgZWZmZWN0IGluIHRoaXMgZmlsZS4KIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAogcnVudGltZS9JbnRsT2JqZWN0LmNwcAotcnVudGltZS9JbnRsUGx1cmFsUnVsZXMu
Y3BwCitydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9I
SURFX0RSQUZUX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCiBydW50aW1lL0ludGxQbHVyYWxS
dWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCA5ZGMwZmUyYjYwNDdm
YjJlOTg1OTA1ZjJkZTYzMTNjMjdkMmQwODg0Li45N2IyM2U1ZWJlNTI5YmU2NDk3MWE3M2NjN2U1
YzY1NjhiZjRiODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludFByb3RvdHlwZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJpZ0ludE9i
amVjdC5oIgogI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKLSNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdElubGluZXMuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Nh
c3QuaCIKQEAgLTEzMiwxMyArMTMyLDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihiaWdJ
bnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVl
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgSlNCaWdJbnQqIHRo
aXNWYWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGF1
dG8qIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CiAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFs
aXplTnVtYmVyRm9ybWF0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byB2YWx1ZSA9IHRvSW50
bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWUu
dHJ5R2V0RG91YmxlKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgbnVtYmVyLnZhbHVl
KCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShu
dW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYmlnSW50UHJvdG9GdW5jVmFsdWVPZiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDc4
MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJlYTYxYzcwOTU3NmRkYWYuLjRjZWQ1MjU3MGNkOTVlNDY1
NDBiZGMwODU2N2U4MGI5YjdjOTExY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjE3LDEwICsyMTcsMTIgQEAKICAgICBt
YWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocm91bmRpbmdJbmNyZW1lbnQpIFwKICAgICBtYWNy
byhyb3VuZGluZ01vZGUpIFwKKyAgICBtYWNybyhyb3VuZGluZ1ByaW9yaXR5KSBcCiAgICAgbWFj
cm8oc2NyaXB0KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8oc2Vjb25kcykgXAog
ICAgIG1hY3JvKHNlZ21lbnQpIFwKKyAgICBtYWNybyhzZWxlY3RSYW5nZSkgXAogICAgIG1hY3Jv
KHNlbnNpdGl2aXR5KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApAQCAt
MjQ5LDYgKzI1MSw3IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0
b1ByZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFjcm8odHJhaWxpbmda
ZXJvRGlzcGxheSkgXAogICAgIG1hY3JvKHR5cGUpIFwKICAgICBtYWNybyh1aWQpIFwKICAgICBt
YWNybyh1bmljb2RlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGZjMzIzNzAzMjAyMmI0YzZkNjdkZDgxNTU5ZWMzMzVi
NTZiZDBkZmYuLmRkMzhlYzZiMWVjY2YyMjE3YzNhOTllY2I1ZDFiMDEyYTdhNDYxYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3Bw
CkBAIC0zNSw4ICszNSwyMCBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgPHd0Zi9SYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+
CiAKKyNpZmRlZiBVX0hJREVfRFJBRlRfQVBJCisjdW5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2Vu
ZGlmCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUv
dW51bWJlcmZvcm1hdHRlci5oPgorI2VuZGlmCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorI2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcnJhbmdlZm9ybWF0dGVyLmg+Cisj
ZW5kaWYKKyNkZWZpbmUgVV9ISURFX0RSQUZUX0FQSSAxCisKIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVt
YmVyRm9ybWF0KSB9OwpAQCAtNDUsNiArNTcsMjIgQEAgbmFtZXNwYWNlIEludGxOdW1iZXJGb3Jt
YXRJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQog
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQordm9pZCBVTnVtYmVyRm9ybWF0dGVy
RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0dGVyKiBmb3JtYXR0ZXIpCit7CisgICAg
aWYgKGZvcm1hdHRlcikKKyAgICAgICAgdW51bWZfY2xvc2UoZm9ybWF0dGVyKTsKK30KKyNlbmRp
ZgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQordm9pZCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJSYW5nZUZvcm1hdHRlciog
Zm9ybWF0dGVyKQoreworICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgIHVudW1yZl9jbG9zZShm
b3JtYXR0ZXIpOworfQorI2VuZGlmCisKIHN0cnVjdCBJbnRsTnVtYmVyRm9ybWF0RmllbGQgewog
ICAgIGludDMyX3QgdHlwZTsKICAgICBzaXplX3Qgc2l6ZTsKQEAgLTIxNCw2ICsyNDIsNTYgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRp
ZmllcihTdHJpbmdWaWV3IHVuaXRJZGUKICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJh
dG9yVW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7CiB9CiAKK3N0YXRpYyBB
U0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50
bE51bWJlckZvcm1hdDo6U3R5bGUgc3R5bGUsIGJvb2wgc2lnbiwgSW50bE1hdGhlbWF0aWNhbFZh
bHVlOjpOdW1iZXJUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoIChmaWVsZCkgeworICAgIGNhc2Ug
VU5VTV9JTlRFR0VSX0ZJRUxEOgorICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTjoKKyAgICAgICAgICAgIHJl
dHVybiAibmFuIl9zOworICAgICAgICBjYXNlIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVy
VHlwZTo6SW5maW5pdHk6CisgICAgICAgICAgICByZXR1cm4gImluZmluaXR5Il9zOworICAgICAg
ICBjYXNlIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6SW50ZWdlcjoKKyAgICAg
ICAgICAgIHJldHVybiAiaW50ZWdlciJfczsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgIGNhc2UgVU5VTV9G
UkFDVElPTl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJmcmFjdGlvbiJfczsKKyAgICBjYXNlIFVO
VU1fREVDSU1BTF9TRVBBUkFUT1JfRklFTEQ6CisgICAgICAgIHJldHVybiAiZGVjaW1hbCJfczsK
KyAgICBjYXNlIFVOVU1fRVhQT05FTlRfU1lNQk9MX0ZJRUxEOgorICAgICAgICByZXR1cm4gImV4
cG9uZW50U2VwYXJhdG9yIl9zOworICAgIGNhc2UgVU5VTV9FWFBPTkVOVF9TSUdOX0ZJRUxEOgor
ICAgICAgICByZXR1cm4gImV4cG9uZW50TWludXNTaWduIl9zOworICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJleHBvbmVudEludGVnZXIiX3M7CisgICAgY2Fz
ZSBVTlVNX0dST1VQSU5HX1NFUEFSQVRPUl9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJncm91cCJf
czsKKyAgICBjYXNlIFVOVU1fQ1VSUkVOQ1lfRklFTEQ6CisgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CisgICAgY2FzZSBVTlVNX1BFUkNFTlRfRklFTEQ6CisgICAgICAgIC8vIElmIHRoZSBz
dHlsZSBpcyAidW5pdCIsIHdlIHNob3VsZCByZXBvcnQgYXMgdW5pdC4KKyAgICAgICAgLy8gSlNU
ZXN0cy90ZXN0MjYyL3Rlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRv
UGFydHMvcGVyY2VudC1lbi1VUy5qcworICAgICAgICByZXR1cm4gKHN0eWxlID09IEludGxOdW1i
ZXJGb3JtYXQ6OlN0eWxlOjpVbml0KSA/ICJ1bml0Il9zIDogInBlcmNlbnRTaWduIl9zOworICAg
IGNhc2UgVU5VTV9TSUdOX0ZJRUxEOgorICAgICAgICByZXR1cm4gc2lnbiA/ICJtaW51c1NpZ24i
X3MgOiAicGx1c1NpZ24iX3M7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAg
IGNhc2UgVU5VTV9NRUFTVVJFX1VOSVRfRklFTEQ6CisgICAgICAgIHJldHVybiAidW5pdCJfczsK
KyAgICBjYXNlIFVOVU1fQ09NUEFDVF9GSUVMRDoKKyAgICAgICAgcmV0dXJuICJjb21wYWN0Il9z
OworI2VuZGlmCisgICAgLy8gVGhlc2Ugc2hvdWxkIG5vdCBzaG93IHVwIGJlY2F1c2UgdGhlcmUg
aXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlbSBpbiBOdW1iZXJGb3JtYXQgb3B0aW9ucy4KKyAgICAv
LyBJZiB0aGV5IGRvLCB0aGV5IGRvbid0IGZpdCB3ZWxsIGludG8gYW55IG9mIGtub3duIHBhcnQg
dHlwZXMsIHNvIGNvbnNpZGVyIGl0IGFuICJ1bmtub3duIi4KKyAgICBjYXNlIFVOVU1fUEVSTUlM
TF9GSUVMRDoKKyAgICAvLyBBbnkgbmV3ZXIgYWRkaXRpb25zIHRvIHRoZSBVTnVtYmVyRm9ybWF0
RmllbGRzIGVudW0gc2hvdWxkIGp1c3QgYmUgY29uc2lkZXJlZCBhbiAidW5rbm93biIgcGFydC4K
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gInVua25vd24iX3M7CisgICAgfQorICAgIHJl
dHVybiAidW5rbm93biJfczsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAy
LyNzZWMtaW5pdGlhbGl6ZW51bWJlcmZvcm1hdAogdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0
aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
bG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CkBAIC0zMDksMTQgKzM4Nyw0OSBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhn
bG9iYWxPYmplY3QsIHRoaXMsIG9wdGlvbnMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQs
IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1fbm90YXRpb24pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKKyAgICBtX3JvdW5kaW5nSW5jcmVtZW50ID0g
aW50bE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PnJvdW5kaW5nSW5jcmVtZW50LCAxLCA1MDAwLCAxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgcm91
bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzW10gPSB7CisgICAgICAgIDEsIDIsIDUsIDEwLCAyMCwg
MjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAKKyAgICB9
OworICAgIGlmIChzdGQ6Om5vbmVfb2Yocm91bmRpbmdJbmNyZW1lbnRDYW5kaWRhdGVzLCByb3Vu
ZGluZ0luY3JlbWVudENhbmRpZGF0ZXMgKyBzdGQ6OnNpemUocm91bmRpbmdJbmNyZW1lbnRDYW5k
aWRhdGVzKSwKKyAgICAgICAgWyZdKHVuc2lnbmVkIGNhbmRpZGF0ZSkgeworICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZSA9PSBtX3JvdW5kaW5nSW5jcmVtZW50OworICAgICAgICB9KSkgewor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nSW5j
cmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwg
MjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3MpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEgJiYgbV9yb3VuZGluZ1R5cGUg
IT0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyb3VuZGluZyB0eXBlIGlzIG5vdCBmcmFjdGlv
bi1kaWdpdHMgd2hpbGUgcm91bmRpbmdJbmNyZW1lbnQgaXMgc3BlY2lmaWVkIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJhaWxpbmdaZXJvRGlzcGxheSA9IGludGxPcHRp
b248VHJhaWxpbmdaZXJvRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT50cmFpbGluZ1plcm9EaXNwbGF5LCB7IHsgImF1dG8iX3MsIFRyYWlsaW5nWmVyb0Rp
c3BsYXk6OkF1dG8gfSwgeyAic3RyaXBJZkludGVnZXIiX3MsIFRyYWlsaW5nWmVyb0Rpc3BsYXk6
OlN0cmlwSWZJbnRlZ2VyIH0gfSwgInRyYWlsaW5nWmVyb0Rpc3BsYXkgbXVzdCBiZSBlaXRoZXIg
XCJhdXRvXCIgb3IgXCJzdHJpcElmSW50ZWdlclwiIl9zLCBUcmFpbGluZ1plcm9EaXNwbGF5OjpB
dXRvKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCiAgICAgbV9j
b21wYWN0RGlzcGxheSA9IGludGxPcHRpb248Q29tcGFjdERpc3BsYXk+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIHsg
eyAic2hvcnQiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCB9LCB7ICJsb25nIl9zLCBDb21wYWN0
RGlzcGxheTo6TG9uZyB9IH0sICJjb21wYWN0RGlzcGxheSBtdXN0IGJlIGVpdGhlciBcInNob3J0
XCIgb3IgXCJsb25nXCIiX3MsIENvbXBhY3REaXNwbGF5OjpTaG9ydCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIFRyaVN0YXRlIHVzZUdyb3VwaW5nID0g
aW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSk7CisgICAgVXNlR3JvdXBpbmcgZGVmYXVsdFVzZUdy
b3VwaW5nID0gVXNlR3JvdXBpbmc6OkF1dG87CisgICAgaWYgKG1fbm90YXRpb24gPT0gSW50bE5v
dGF0aW9uOjpDb21wYWN0KQorICAgICAgICBkZWZhdWx0VXNlR3JvdXBpbmcgPSBVc2VHcm91cGlu
Zzo6TWluMjsKKworICAgIG1fdXNlR3JvdXBpbmcgPSBpbnRsU3RyaW5nT3JCb29sZWFuT3B0aW9u
PFVzZUdyb3VwaW5nPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ1c2VHcm91cGluZyIpLCBVc2VHcm91cGluZzo6QWx3YXlzLCBVc2VHcm91cGluZzo6
RmFsc2UsIHsgeyAibWluMiJfcywgVXNlR3JvdXBpbmc6Ok1pbjIgfSwgeyAiYXV0byJfcywgVXNl
R3JvdXBpbmc6OkF1dG8gfSwgeyAiYWx3YXlzIl9zLCBVc2VHcm91cGluZzo6QWx3YXlzIH0gfSwg
InVzZUdyb3VwaW5nIG11c3QgYmUgZWl0aGVyIHRydWUsIGZhbHNlLCBcIm1pbjJcIiwgXCJhdXRv
XCIsIG9yIFwiYWx3YXlzXCIiX3MsIGRlZmF1bHRVc2VHcm91cGluZyk7CisKKyAgICBtX3NpZ25E
aXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRvIl9zLCBT
aWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVyIH0sIHsg
ImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9zLCBTaWdu
RGlzcGxheTo6RXhjZXB0WmVybyB9LCB7ICJuZWdhdGl2ZSJfcywgU2lnbkRpc3BsYXk6Ok5lZ2F0
aXZlIH0gfSwgInNpZ25EaXNwbGF5IG11c3QgYmUgZWl0aGVyIFwiYXV0b1wiLCBcIm5ldmVyXCIs
IFwiYWx3YXlzXCIsIFwiZXhjZXB0WmVyb1wiLCBvciBcIm5lZ2F0aXZlXCIiX3MsIFNpZ25EaXNw
bGF5OjpBdXRvKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKLSAgICBt
X3NpZ25EaXNwbGF5ID0gaW50bE9wdGlvbjxTaWduRGlzcGxheT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2lnbkRpc3BsYXkiKSwgeyB7ICJhdXRv
Il9zLCBTaWduRGlzcGxheTo6QXV0byB9LCB7ICJuZXZlciJfcywgU2lnbkRpc3BsYXk6Ok5ldmVy
IH0sIHsgImFsd2F5cyJfcywgU2lnbkRpc3BsYXk6OkFsd2F5cyB9LCB7ICJleGNlcHRaZXJvIl9z
LCBTaWduRGlzcGxheTo6RXhjZXB0WmVybyB9IH0sICJzaWduRGlzcGxheSBtdXN0IGJlIGVpdGhl
ciBcImF1dG9cIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiLCBvciBcImV4Y2VwdFplcm9cIiJfcywg
U2lnbkRpc3BsYXk6OkF1dG8pOworICAgIG1fcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3Vu
ZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRp
bmdNb2RlLCB7CisgICAgICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwK
KyAgICAgICAgICAgIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sCisgICAgICAg
ICAgICB7ICJleHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6RXhwYW5kIH0sCisgICAgICAgICAgICB7
ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LAorICAgICAgICAgICAgeyAiaGFsZkNl
aWwiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWwgfSwKKyAgICAgICAgICAgIHsgImhhbGZGbG9v
ciJfcywgUm91bmRpbmdNb2RlOjpIYWxmRmxvb3IgfSwKKyAgICAgICAgICAgIHsgImhhbGZFeHBh
bmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9LAorICAgICAgICAgICAgeyAiaGFsZlRy
dW5jIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZUcnVuYyB9LAorICAgICAgICAgICAgeyAiaGFsZkV2
ZW4iX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV2ZW4gfQorICAgICAgICB9LCAicm91bmRpbmdNb2Rl
IG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwiZXhwYW5kXCIsIFwidHJ1bmNc
IiwgXCJoYWxmQ2VpbFwiLCBcImhhbGZGbG9vclwiLCBcImhhbGZFeHBhbmRcIiwgXCJoYWxmVHJ1
bmNcIiwgb3IgXCJoYWxmRXZlblwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBDU3RyaW5nIGRhdGFM
b2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZGF0YUxvY2FsZSwgIi11
LW51LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CkBAIC0zMjksNyArNDQyLDQ4IEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUt
b3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9z
a2VsZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwotICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi11cCIpOworCisgICAgc3dp
dGNoIChtX3JvdW5kaW5nTW9kZSkgeworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWNlaWxpbmciKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWZsb29yIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtdXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBS
b3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3Vu
ZGluZy1tb2RlLWRvd24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkhhbGZDZWlsOiB7CisgICAgICAgIC8vIE9ubHkgSUNVNjl+IHN1cHBvcnRzIGhhbGYtY2VpbGlu
Zy4gSWdub3JlIHRoaXMgb3B0aW9uIGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvZThk
ZmVhOWJiNmJiMjc1OTY3MzExNzNiMzUyNzU5ZTQ0YWQwNmIyMQorICAgICAgICBpZiAoV1RGOjpJ
Q1U6Om1ham9yVmVyc2lvbigpID49IDY5KQorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgicm91bmRpbmctbW9kZS1oYWxmLWNlaWxpbmciKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7IC8v
IERlZmF1bHQgb3B0aW9uLgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkhhbGZGbG9vcjogeworICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyBoYWxm
LWNlaWwuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQg
aXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0
L2U4ZGZlYTliYjZiYjI3NTk2NzMxMTczYjM1Mjc1OWU0NGFkMDZiMjEKKyAgICAgICAgaWYgKFdU
Rjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInJvdW5kaW5nLW1vZGUtaGFsZi1mbG9vciIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsg
Ly8gRGVmYXVsdCBvcHRpb24uCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJvdW5k
aW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91
bmRpbmctbW9kZS1oYWxmLXVwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpIYWxmVHJ1bmM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInJvdW5kaW5n
LW1vZGUtaGFsZi1kb3duIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2Rl
OjpIYWxmRXZlbjoKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9k
ZS1oYWxmLWV2ZW4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc3dpdGNoIChtX3N0
eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTM4NiwzMiArNTQwLDE4IEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgfQogICAgIH0KIAotICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0
X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI2ludGVnZXItd2lkdGgKLSAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgaW50ZWdlci13aWR0aC8iLCBXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkg
Pj0gNjcgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsg
aW5zdGVhZCBvZiAqLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbmltdW1JbnRl
Z2VyRGlnaXRzOyArK2kpCi0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAg
ICBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKHRoaXMsIHNrZWxldG9u
QnVpbGRlcik7CiAKLSAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7Ci0gICAgY2FzZSBJbnRs
Um91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czogewotICAgICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9w
YXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KLSAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgiIC4iKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCi0gICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21h
eGltdW1GcmFjdGlvbkRpZ2l0cyAtIG1fbWluaW11bUZyYWN0aW9uRGlnaXRzOyArK2kpCi0gICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOiB7Ci0gICAg
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9j
cy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NpZ25pZmljYW50
LWRpZ2l0cy1wcmVjaXNpb24KLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW5pbXVtU2lnbmlmaWNhbnREaWdp
dHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0AnKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIC0g
bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoJyMnKTsKKyAgICAvLyBDb25maWd1cmUgdGhpcyBqdXN0IGFmdGVyIHByZWNp
c2lvbi4KKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFp
bi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdHJhaWxp
bmctemVyby1kaXNwbGF5CisgICAgc3dpdGNoIChtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpIHsKKyAg
ICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OkF1dG86CiAgICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3VuZGluZzoKLSAgICAgICAgLy8g
RG8gbm90IHNldCBhbnl0aGluZy4KKyAgICBjYXNlIFRyYWlsaW5nWmVyb0Rpc3BsYXk6OlN0cmlw
SWZJbnRlZ2VyOgorICAgICAgICAvLyBPbmx5IElDVTY5fiBzdXBwb3J0cyB0cmFpbGluZyB6ZXJv
IGRpc3BsYXkuIElnbm9yZSB0aGlzIG9wdGlvbiBpZiBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBv
cnQgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29t
bWl0L2I3OWMyOTlmOTBkNDAyM2FjMjM3ZGIzZDAzMzVkNTY4YmYyMWNkMzYKKyAgICAgICAgaWYg
KFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIi93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDYyLDIwICs2
MDIsNTQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXplcm8iKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTaWduRGlzcGxheTo6TmVnYXRpdmU6CisgICAgICAgIC8vIE9ubHkg
SUNVNjl+IHN1cHBvcnRzIG5lZ2F0aXZlIHNpZ24gZGlzcGxheS4gSWdub3JlIHRoaXMgb3B0aW9u
IGlmIGxpbmtlZCBJQ1UgZG9lcyBub3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvMWFhMGRhZDhlMDZlY2M5OWJmZjQ0MmRk
MzdmNmRhYTJkMzlkOWE1YQorICAgICAgICBpZiAoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49
IDY5KSB7CisgICAgICAgICAgICBpZiAodXNlQWNjb3VudGluZykKKyAgICAgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLW5lZ2F0aXZlIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNp
Z24tbmVnYXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW1fdXNlR3JvdXBpbmcpCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9z
YWwtaW50bC1udW1iZXJmb3JtYXQtdjMvaXNzdWVzLzMKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFpbi9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjZ3JvdXBpbmcKKyAgICBzd2l0Y2ggKG1fdXNlR3JvdXBpbmcp
IHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIGdyb3VwLW9mZiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3Vw
aW5nOjpNaW4yOgorICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtbWluMiIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtYXV0byIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIiBncm91cC1vbi1hbGlnbmVkIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIFN0
cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygpOwogICAgIGRhdGFMb2dM
bklmKEludGxOdW1iZXJGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgc2tlbGV0b24pOwogICAgIFN0
cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKKyAgICBhdXRvIHVwY29udmVydGVkID0g
c2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpOworCiAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1mX29w
ZW5Gb3JTa2VsZXRvbkFuZExvY2FsZShza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCkuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25z
LmRhdGEoKSwgJnN0YXR1cykpOworICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVu
Rm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5n
dGgoKSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRF
UikKKyAgICBtX251bWJlclJhbmdlRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJS
YW5nZUZvcm1hdHRlciwgVU51bWJlclJhbmdlRm9ybWF0dGVyRGVsZXRlcj4odW51bXJmX29wZW5G
b3JTa2VsZXRvbldpdGhDb2xsYXBzZUFuZElkZW50aXR5RmFsbGJhY2sodXBjb252ZXJ0ZWQuZ2V0
KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVU5VTV9SQU5HRV9DT0xMQVBTRV9BVVRPLCBVTlVN
X0lERU5USVRZX0ZBTExCQUNLX0FQUFJPWElNQVRFTFksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9u
cy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKICNlbHNlCiAgICAgVU51bWJlckZvcm1hdFN0eWxlIHN0eWxlID0gVU5VTV9ERUZBVUxU
OwogICAgIHN3aXRjaCAobV9zdHlsZSkgewpAQCAtNTI5LDEyICs3MDMsMTMgQEAgdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmEKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKICAgICBjYXNlIFNp
Z25EaXNwbGF5OjpBbHdheXM6CiAgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVybzoKKyAg
ICBjYXNlIFNpZ25EaXNwbGF5OjpOZWdhdGl2ZToKICAgICAgICAgLy8gSWdub3JlIHRoaXMgY2Fz
ZSBzaW5jZSBsaW5rZWQgSUNVIGRvZXMgbm90IHN1cHBvcnQgaXQuCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVt
YmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXRE
ZWxldGVyPih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5z
aW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xvc2U+Pih1bnVt
X29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCks
IG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIE51bWJlckZvcm1hdCJfcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTU1OSwxMSArNzM0LDI3
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX01JTl9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWluaW11
bVNpZ25pZmljYW50RGlnaXRzKTsKICAgICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIFVOVU1fTUFYX1NJR05JRklDQU5UX0RJR0lUUywgbV9tYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
OkNvbXBhY3RSb3VuZGluZzoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNp
b246CisgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2VkIElDVSBkb2VzIG5v
dCBzdXBwb3J0IGl0LgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
Okxlc3NQcmVjaXNpb246CisgICAgICAgIC8vIElnbm9yZSB0aGlzIGNhc2Ugc2luY2UgbGlua2Vk
IElDVSBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKG1fdXNlR3JvdXBpbmcpIHsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKKyAg
ICAgICAgdW51bV9zZXRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fR1JPVVBJ
TkdfVVNFRCwgZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVzZUdyb3VwaW5nOjpN
aW4yOgogICAgICAgICAvLyBJZ25vcmUgdGhpcyBjYXNlIHNpbmNlIGxpbmtlZCBJQ1UgZG9lcyBu
b3Qgc3VwcG9ydCBpdC4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0
bzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAg
ICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19V
U0VELCB0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHVudW1fc2V0QXR0cmlidXRl
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX0dST1VQSU5HX1VTRUQsIG1fdXNlR3JvdXBpbmcp
OwogICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBVTlVNX1JPVU5E
SU5HX01PREUsIFVOVU1fUk9VTkRfSEFMRlVQKTsKICNlbmRpZgogfQpAQCAtNTc4LDcgKzc2OSw3
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFU
VEVSKQogICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZvcm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29w
ZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlx
dWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1
bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwogICAgIHVudW1mX2Zvcm1hdERvdWJsZShtX251bWJl
ckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7
CkBAIC01OTMsMjkgKzc4NCwyNiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbgogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAjZW5kaWYKLSAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKKyAgICByZXR1cm4ganNTdHJp
bmcodm0sIFN0cmluZyhXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKLUpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkgY29uc3QK
K0pTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNYXRoZW1hdGljYWxWYWx1ZSYmIHZhbHVlKSBjb25zdAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBhdXRvIHN0cmluZyA9IHZhbHVlLT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIDEwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAgQVNT
RVJUKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJSSgpKTsKLSAgICBhdXRvKiBy
YXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVy
czgoKSk7CisgICAgdmFsdWUuZW5zdXJlTm9uRG91YmxlKCk7CisgICAgY29uc3QgYXV0byYgc3Ry
aW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7
CiAjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQogICAgIEFTU0VSVChtX251bWJlckZv
cm1hdHRlcik7CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgVUZv
cm1hdHRlZE51bWJlckRlbGV0ZXI+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOworICAgIGF1
dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElD
VURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwot
ICAgIHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHJhd1N0cmlu
Zywgc3RyaW5nLmxlbmd0aCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAg
IHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHN0cmluZy5kYXRh
KCksIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwogICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmlu
ZywgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBidWZmZXIpOwpAQCAtNjIzLDEzICs4MTEsODkgQEAg
SlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIHZhbHVlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKICNlbHNl
CiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERlY2ltYWwsIG1fbnVtYmVyRm9ybWF0Lmdl
dCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLCBudWxscHRyKTsKKyAgICBh
dXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERlY2lt
YWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCks
IGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBCaWdJbnQuIl9zKTsKICNlbmRpZgotICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5n
KGJ1ZmZlcikpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVy
KSkpOworfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQorSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKKworICAgIGlmIChzdGQ6
OmlzbmFuKHN0YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCisgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2Yg
cmFuZ2UiX3MpOworCisgICAgaWYgKGVuZCA8IHN0YXJ0KQorICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQi
X3MpOworCisgICAgaWYgKGlzTmVnYXRpdmVaZXJvKGVuZCkgJiYgc3RhcnQgPj0gMCkKKyAgICAg
ICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMg
bGFyZ2VyIHRoYW4gZW5kIl9zKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJh
bmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0
dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICBhdXRvKiBm
b3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVz
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsK
KworICAgIGludDMyX3QgbGVuZ3RoID0gMDsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gdWZt
dHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKIH0KIAorSlNWYWx1ZSBJ
bnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiBzdGFydCwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYg
ZW5kKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBBU1NFUlQobV9udW1iZXJS
YW5nZUZvcm1hdHRlcik7CisKKyAgICBpZiAoc3RhcnQubnVtYmVyVHlwZSgpID09IEludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6TmFOIHx8IGVuZC5udW1iZXJUeXBlKCkgPT0gSW50
bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4pCisgICAgICAgIHJldHVybiB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQg
b2YgcmFuZ2UiX3MpOworCisgICAgc3RhcnQuZW5zdXJlTm9uRG91YmxlKCk7CisgICAgY29uc3Qg
YXV0byYgc3RhcnRTdHJpbmcgPSBzdGFydC5nZXRTdHJpbmcoKTsKKworICAgIGVuZC5lbnN1cmVO
b25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBlbmRTdHJpbmcgPSBlbmQuZ2V0U3RyaW5nKCk7
CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHJhbmdl
ID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVt
cmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICB1bnVtcmZf
Zm9ybWF0RGVjaW1hbFJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0U3Ry
aW5nLmRhdGEoKSwgc3RhcnRTdHJpbmcubGVuZ3RoKCksIGVuZFN0cmluZy5kYXRhKCksIGVuZFN0
cmluZy5sZW5ndGgoKSwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworCisgICAgYXV0byogZm9ybWF0dGVk
VmFsdWUgPSB1bnVtcmZfcmVzdWx0QXNWYWx1ZShyYW5nZS5nZXQoKSwgJnN0YXR1cyk7CisgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisKKyAgICBp
bnQzMl90IGxlbmd0aCA9IDA7CisgICAgY29uc3QgVUNoYXIqIHN0cmluZyA9IHVmbXR2YWxfZ2V0
U3RyaW5nKGZvcm1hdHRlZFZhbHVlLCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKworICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKHN0cmluZywgbGVuZ3RoKSk7Cit9CisjZW5kaWYKKwogQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3
aXRjaCAoc3R5bGUpIHsKQEAgLTcyNywxMSArOTkxLDgxIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVt
YmVyRm9ybWF0OjpzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKICAg
ICAgICAgcmV0dXJuICJhbHdheXMiX3M7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6RXhjZXB0WmVy
bzoKICAgICAgICAgcmV0dXJuICJleGNlcHRaZXJvIl9zOworICAgIGNhc2UgU2lnbkRpc3BsYXk6
Ok5lZ2F0aXZlOgorICAgICAgICByZXR1cm4gIm5lZ2F0aXZlIl9zOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisK
K0FTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRp
bmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBzd2l0Y2ggKHJvdW5kaW5nTW9kZSkgeworICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICByZXR1cm4gImNlaWwiX3M7CisgICAg
Y2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICByZXR1cm4gImZsb29yIl9zOworICAg
IGNhc2UgUm91bmRpbmdNb2RlOjpFeHBhbmQ6CisgICAgICAgIHJldHVybiAiZXhwYW5kIl9zOwor
ICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgcmV0dXJuICJ0cnVuYyJfczsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkNlaWw6CisgICAgICAgIHJldHVybiAiaGFsZkNl
aWwiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZGbG9vcjoKKyAgICAgICAgcmV0dXJu
ICJoYWxmRmxvb3IiX3M7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAg
ICAgIHJldHVybiAiaGFsZkV4cGFuZCJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZlRy
dW5jOgorICAgICAgICByZXR1cm4gImhhbGZUcnVuYyJfczsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6SGFsZkV2ZW46CisgICAgICAgIHJldHVybiAiaGFsZkV2ZW4iX3M7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30K
KworQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJp
bmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9EaXNwbGF5KQoreworICAgIHN3aXRj
aCAodHJhaWxpbmdaZXJvRGlzcGxheSkgeworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlzcGxheTo6
QXV0bzoKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zOworICAgIGNhc2UgVHJhaWxpbmdaZXJvRGlz
cGxheTo6U3RyaXBJZkludGVnZXI6CisgICAgICAgIHJldHVybiAic3RyaXBJZkludGVnZXIiX3M7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKIH0KIAorQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5n
UHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCit7CisgICAgc3dp
dGNoIChyb3VuZGluZ1R5cGUpIHsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzOgorICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6Cisg
ICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQ
cmVjaXNpb246CisgICAgICAgIHJldHVybiAibW9yZVByZWNpc2lvbiJfczsKKyAgICBjYXNlIElu
dGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgIHJldHVybiAibGVzc1ByZWNp
c2lvbiJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OnVzZUdy
b3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VHcm91cGluZykKK3sKKyAgICBzd2l0
Y2ggKHVzZUdyb3VwaW5nKSB7CisgICAgY2FzZSBVc2VHcm91cGluZzo6RmFsc2U6CisgICAgICAg
IHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2UgVXNlR3JvdXBpbmc6Ok1pbjI6Cisg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJtaW4yIl9zKTsKKyAgICBjYXNl
IFVzZUdyb3VwaW5nOjpBdXRvOgorICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZt
LCAiYXV0byJfcyk7CisgICAgY2FzZSBVc2VHcm91cGluZzo6QWx3YXlzOgorICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9zKTsKKyAgICB9CisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50
bC5udW1iZXJmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxO
dW1iZXJGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdAogewpAQCAtNzY0LDE0ICsxMDk4LDIzIEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9y
bWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMsIGpzTnVtYmVyKG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzKSk7
CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11
bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21heGltdW1TaWduaWZpY2FudERpZ2l0cykp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkNvbXBhY3RSb3Vu
ZGluZzoKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAgY2Fz
ZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNOdW1i
ZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVyKG1f
bWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlcihtX21p
bmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIobV9t
YXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZUdyb3Vw
aW5nIiksIGpzQm9vbGVhbihtX3VzZUdyb3VwaW5nKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidXNlR3JvdXBpbmciKSwgdXNlR3JvdXBp
bmdWYWx1ZSh2bSwgbV91c2VHcm91cGluZykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGF0aW9uIiksIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgbm90YXRpb25TdHJpbmcobV9ub3RhdGlvbikpKTsKICAgICBpZiAobV9ub3RhdGlvbiA9
PSBJbnRsTm90YXRpb246OkNvbXBhY3QpCiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBhY3REaXNwbGF5IiksIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgY29tcGFjdERpc3BsYXlTdHJpbmcobV9jb21wYWN0RGlzcGxheSkpKTsKICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaWdu
RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNpZ25EaXNwbGF5U3RyaW5nKG1fc2ln
bkRpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5yb3VuZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcm91bmRpbmdNb2RlU3RyaW5n
KG1fcm91bmRpbmdNb2RlKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cm91bmRpbmdJbmNyZW1lbnQsIGpzTnVtYmVyKG1fcm91bmRpbmdJbmNyZW1lbnQp
KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRyYWlsaW5n
WmVyb0Rpc3BsYXksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdHJhaWxpbmdaZXJvRGlzcGxheVN0
cmluZyhtX3RyYWlsaW5nWmVyb0Rpc3BsYXkpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIHJvdW5kaW5nUHJpb3JpdHlTdHJpbmcobV9yb3VuZGluZ1R5cGUpKSk7CiAgICAgcmV0dXJu
IG9wdGlvbnM7CiB9CiAKQEAgLTc4MCw1MiArMTEyMyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAgICBt
X2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0
ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVy
Rm9ybWF0OjpTdHlsZSBzdHlsZSwgZG91YmxlIHZhbHVlKQotewotICAgIHN3aXRjaCAoZmllbGQp
IHsKLSAgICBjYXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4o
dmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuICJuYW4iX3M7Ci0gICAgICAgIGlmICghc3RkOjpp
c2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gImluZmluaXR5Il9zOwotICAgICAg
ICByZXR1cm4gImludGVnZXIiX3M7Ci0gICAgY2FzZSBVTlVNX0ZSQUNUSU9OX0ZJRUxEOgotICAg
ICAgICByZXR1cm4gImZyYWN0aW9uIl9zOwotICAgIGNhc2UgVU5VTV9ERUNJTUFMX1NFUEFSQVRP
Ul9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJkZWNpbWFsIl9zOwotICAgIGNhc2UgVU5VTV9FWFBP
TkVOVF9TWU1CT0xfRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZXhwb25lbnRTZXBhcmF0b3IiX3M7
Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX1NJR05fRklFTEQ6Ci0gICAgICAgIHJldHVybiAiZXhw
b25lbnRNaW51c1NpZ24iX3M7Ci0gICAgY2FzZSBVTlVNX0VYUE9ORU5UX0ZJRUxEOgotICAgICAg
ICByZXR1cm4gImV4cG9uZW50SW50ZWdlciJfczsKLSAgICBjYXNlIFVOVU1fR1JPVVBJTkdfU0VQ
QVJBVE9SX0ZJRUxEOgotICAgICAgICByZXR1cm4gImdyb3VwIl9zOwotICAgIGNhc2UgVU5VTV9D
VVJSRU5DWV9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKLSAgICBjYXNlIFVO
VU1fUEVSQ0VOVF9GSUVMRDoKLSAgICAgICAgLy8gSWYgdGhlIHN0eWxlIGlzICJ1bml0Iiwgd2Ug
c2hvdWxkIHJlcG9ydCBhcyB1bml0LgotICAgICAgICAvLyBKU1Rlc3RzL3Rlc3QyNjIvdGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9wZXJjZW50LWVuLVVT
LmpzCi0gICAgICAgIHJldHVybiAoc3R5bGUgPT0gSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OlVu
aXQpID8gInVuaXQiX3MgOiAicGVyY2VudFNpZ24iX3M7Ci0gICAgY2FzZSBVTlVNX1NJR05fRklF
TEQ6Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gIm1pbnVzU2lnbiJfcyA6
ICJwbHVzU2lnbiJfczsKLSNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCi0gICAgY2Fz
ZSBVTlVNX01FQVNVUkVfVU5JVF9GSUVMRDoKLSAgICAgICAgcmV0dXJuICJ1bml0Il9zOwotICAg
IGNhc2UgVU5VTV9DT01QQUNUX0ZJRUxEOgotICAgICAgICByZXR1cm4gImNvbXBhY3QiX3M7Ci0j
ZW5kaWYKLSAgICAvLyBUaGVzZSBzaG91bGQgbm90IHNob3cgdXAgYmVjYXVzZSB0aGVyZSBpcyBu
byB3YXkgdG8gc3BlY2lmeSB0aGVtIGluIE51bWJlckZvcm1hdCBvcHRpb25zLgotICAgIC8vIElm
IHRoZXkgZG8sIHRoZXkgZG9uJ3QgZml0IHdlbGwgaW50byBhbnkgb2Yga25vd24gcGFydCB0eXBl
cywgc28gY29uc2lkZXIgaXQgYW4gInVua25vd24iLgotICAgIGNhc2UgVU5VTV9QRVJNSUxMX0ZJ
RUxEOgotICAgIC8vIEFueSBuZXdlciBhZGRpdGlvbnMgdG8gdGhlIFVOdW1iZXJGb3JtYXRGaWVs
ZHMgZW51bSBzaG91bGQganVzdCBiZSBjb25zaWRlcmVkIGFuICJ1bmtub3duIiBwYXJ0LgotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAidW5rbm93biJfczsKLSAgICB9Ci0gICAgcmV0dXJu
ICJ1bmtub3duIl9zOwotfQotCi12b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZSBzdHlsZSwgZG91Ymxl
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgSW50bEZpZWxkSXRlcmF0b3ImIGl0ZXJh
dG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJpbmcqIHVuaXQpCit2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHlsZSBzdHlsZSwgYm9vbCBzaWduLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUg
bnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9yJiBp
dGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC04NjgsNyArMTE2Niw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlCiAgICAg
ICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKICAgICAgICAg
d2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4
XS50eXBlID09IGZpZWxkVHlwZSkKICAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAg
ICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFs
U3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMo
ZmllbGRUeXBlKSwgc3R5bGUsIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVs
ZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgc2ln
biwgbnVtYmVyVHlwZSkpOwogICAgICAgICBhdXRvIHBhcnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZt
LCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAtIHN0YXJ0SW5kZXgpOwogICAg
ICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgcGFy
dFR5cGUpOwpAQCAtODk0LDcgKzExOTIsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAg
IFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKLSAgICBhdXRvIGZvcm1hdHRlZE51
bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBVRm9ybWF0dGVkTnVtYmVy
RGVsZXRlcj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CisgICAgYXV0byBmb3JtYXR0ZWRO
dW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVt
Zl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAgICAgdW51bWZfZm9y
bWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVy
LmdldCgpLCAmc3RhdHVzKTsKQEAgLTkxNSwxNiArMTIxMyw2MyBAQCBKU1ZhbHVlIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91
YmxlIHZhbAogICAgIEludGxGaWVsZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7
CiAjZW5kaWYKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CisgICAg
YXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcoV1RGTW92ZShyZXN1bHQpKTsKIAogICAgIEpTQXJy
YXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3Vz
KSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChn
bG9iYWxPYmplY3QsIG1fc3R5bGUsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGl0ZXJhdG9yLCBwYXJ0
cyk7CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgbV9zdHlsZSwgc3Rk
OjpzaWduYml0KHZhbHVlKSwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpudW1iZXJUeXBlRnJvbURv
dWJsZSh2YWx1ZSksIHJlc3VsdFN0cmluZywgaXRlcmF0b3IsIHBhcnRzKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwogfQogCisjaWYg
SEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSYmIHZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB2YWx1
ZS5lbnN1cmVOb25Eb3VibGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHJpbmcgPSB2YWx1ZS5nZXRT
dHJpbmcoKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1
dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZp
ZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0
ZXJhdG9yIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyAgICBBU1NFUlQo
bV9udW1iZXJGb3JtYXR0ZXIpOworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlx
dWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1
bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworCisgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251
bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcsIGZvcm1hdHRlZE51bWJlci5nZXQo
KSwgcmVzdWx0KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51
bWJlci4iX3MpOworCisgICAgdW51bWZfcmVzdWx0R2V0QWxsRmllbGRQb3NpdGlvbnMoZm9ybWF0
dGVkTnVtYmVyLmdldCgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKworICAgIEludGxGaWVs
ZEl0ZXJhdG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7CisKKyAgICBhdXRvIHJlc3VsdFN0
cmluZyA9IFN0cmluZyhXVEZNb3ZlKHJlc3VsdCkpOworCisgICAgSlNBcnJheSogcGFydHMgPSBK
U0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKKyAgICBp
ZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOworCisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwg
bV9zdHlsZSwgdmFsdWUuc2lnbigpLCB2YWx1ZS5udW1iZXJUeXBlKCksIHJlc3VsdFN0cmluZywg
aXRlcmF0b3IsIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIHBhcnRzOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4
IDM4YTc3MGM1OWQ0MTA3MDBmODljNDlmNzY5YTkxNDlkYmNhODU3ZGUuLmNiNjFkYWUyZmJhYzFk
MTZlYzAyZDk3MTc0YTEzMjUyY2MwMzMwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTI4LDYgKzI4LDggQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgogCkBAIC0zOCwxOSArNDAsMTEw
IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQot
I2luY2x1ZGUgPHVuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oPgorI2lmICFkZWZpbmVkKEhBVkVf
SUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05V
TSA+PSA2OAorI2RlZmluZSBIQVZFX0lDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIgMQorI2Vu
ZGlmCiAjZW5kaWYKIAorc3RydWN0IFVOdW1iZXJGb3JtYXR0ZXI7CitzdHJ1Y3QgVU51bWJlclJh
bmdlRm9ybWF0dGVyOworCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSW50bEZpZWxkSXRlcmF0
b3I7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb247CiBlbnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9u
S2V5IDogdWludDhfdDsKIAotZW51bSBjbGFzcyBJbnRsUm91bmRpbmdUeXBlIDogdWludDhfdCB7
IEZyYWN0aW9uRGlnaXRzLCBTaWduaWZpY2FudERpZ2l0cywgQ29tcGFjdFJvdW5kaW5nIH07Citl
bnVtIGNsYXNzIEludGxSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsgRnJhY3Rpb25EaWdpdHMsIFNp
Z25pZmljYW50RGlnaXRzLCBNb3JlUHJlY2lzaW9uLCBMZXNzUHJlY2lzaW9uIH07CitlbnVtIGNs
YXNzIEludGxSb3VuZGluZ1ByaW9yaXR5IDogdWludDhfdCB7IEF1dG8sIE1vcmVQcmVjaXNpb24s
IExlc3NQcmVjaXNpb24gfTsKIGVudW0gY2xhc3MgSW50bE5vdGF0aW9uIDogdWludDhfdCB7IFN0
YW5kYXJkLCBTY2llbnRpZmljLCBFbmdpbmVlcmluZywgQ29tcGFjdCB9OwogdGVtcGxhdGU8dHlw
ZW5hbWUgSW50bFR5cGU+IHZvaWQgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiwgSW50bFR5cGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbkRp
Z2l0c0RlZmF1bHQsIHVuc2lnbmVkIG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIEludGxO
b3RhdGlvbik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJG
b3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwor
CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorc3RydWN0IFVOdW1iZXJGb3JtYXR0
ZXJEZWxldGVyIHsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG9wZXJhdG9yKCkoVU51bWJl
ckZvcm1hdHRlciopOworfTsKKyNlbmRpZgorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorc3RydWN0IFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXIgeworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIqKTsK
K307CisjZW5kaWYKKworY2xhc3MgSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChJbnRsTWF0aGVtYXRpY2FsVmFsdWUpOworcHVibGljOgorICAgIGVu
dW0gY2xhc3MgTnVtYmVyVHlwZSB7IEludGVnZXIsIEluZmluaXR5LCBOYU4sIH07CisgICAgdXNp
bmcgVmFsdWUgPSBzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBDU3RyaW5nPjsKKworICAgIEludGxNYXRo
ZW1hdGljYWxWYWx1ZSgpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IEludGxNYXRoZW1hdGlj
YWxWYWx1ZShkb3VibGUgdmFsdWUpCisgICAgICAgIDogbV9udW1iZXJUeXBlKG51bWJlclR5cGVG
cm9tRG91YmxlKHZhbHVlKSkKKyAgICAgICAgLCBtX3NpZ24oc3RkOjpzaWduYml0KHZhbHVlKSkK
KyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgZXhwbGljaXQgSW50bE1h
dGhlbWF0aWNhbFZhbHVlKE51bWJlclR5cGUgbnVtYmVyVHlwZSwgYm9vbCBzaWduLCBDU3RyaW5n
IHZhbHVlKQorICAgICAgICA6IG1fbnVtYmVyVHlwZShudW1iZXJUeXBlKQorICAgICAgICAsIG1f
c2lnbihzaWduKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZW5zdXJlTm9uRG91YmxlKCkKKyAgICB7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPGRvdWJsZT4obV92YWx1ZSkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9udW1i
ZXJUeXBlKSB7CisgICAgICAgICAgICBjYXNlIE51bWJlclR5cGU6OkludGVnZXI6IHsKKyAgICAg
ICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpOworICAg
ICAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlWmVybyh2YWx1ZSkpCisgICAgICAgICAgICAgICAg
ICAgIG1fdmFsdWUgPSBDU3RyaW5nKCItMCIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbV92YWx1ZSA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBO
dW1iZXJUeXBlOjpOYU46CisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IENTdHJpbmcoIm5hbiIp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOdW1iZXJUeXBlOjpJ
bmZpbml0eToKKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0gQ1N0cmluZyhtX3NpZ24gPyAiLWlu
ZmluaXR5IiA6ICJpbmZpbml0eSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgTnVtYmVyVHlwZSBudW1iZXJUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJUeXBlOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUdldERvdWJsZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG1f
dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIGNvbnN0IENTdHJpbmcmIGdl
dFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxDU3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxDU3RyaW5n
PihtX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTnVtYmVyVHlwZSBudW1iZXJUeXBlRnJv
bURvdWJsZShkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6TmFOOworICAgICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE51bWJlclR5cGU6OkluZmlu
aXR5OworICAgICAgICByZXR1cm4gTnVtYmVyVHlwZTo6SW50ZWdlcjsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgTnVtYmVyVHlwZSBtX251bWJlclR5cGUgeyBOdW1iZXJUeXBlOjpJbnRlZ2VyIH07
CisgICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9OworICAgIFZhbHVlIG1fdmFsdWUgeyAwLjAgfTsK
K307CiAKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC03NiwyNCArMTY5LDM2IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB2b2lkIGluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCop
IGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSW50bE1hdGhlbWF0
aWNhbFZhbHVlJiYpIGNvbnN0OwogICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSkgY29uc3Q7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQor
ICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIEludGxNYXRoZW1hdGlj
YWxWYWx1ZSYmKSBjb25zdDsKKyNlbmRpZgogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZP
Uk1BVFRFUikKKyAgICBKU1ZhbHVlIGZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBkb3VibGUpIGNvbnN0OworICAgIEpTVmFsdWUgZm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUmJiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlJiYpIGNvbnN0
OworI2VuZGlmCisKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKIAogICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsg
RGVjaW1hbCwgUGVyY2VudCwgQ3VycmVuY3ksIFVuaXQgfTsKIAotICAgIHN0YXRpYyB2b2lkIGZv
cm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBkb3VibGUsIGNvbnN0
IFN0cmluZyYgZm9ybWF0dGVkLCBJbnRsRmllbGRJdGVyYXRvciYsIEpTQXJyYXkqLCBKU1N0cmlu
ZyogdW5pdCA9IG51bGxwdHIpOworICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCosIFN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGljYWxWYWx1
ZTo6TnVtYmVyVHlwZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIEludGxGaWVsZEl0ZXJhdG9y
JiwgSlNBcnJheSosIEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0KiwgdW5zaWduZWQgbWlu
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11bUZyYWN0aW9uRGlnaXRz
RGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4K
KyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9u
KEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBu
b3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3Jt
YXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGlu
Z1R5cGUpOworCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUq
KTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDUsNyArMjEwLDkgQEAgY2xh
c3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBlbnVtIGNsYXNzIEN1cnJlbmN5U2lnbiA6IHVpbnQ4X3QgeyBTdGFuZGFyZCwgQWNjb3VudGlu
ZyB9OwogICAgIGVudW0gY2xhc3MgVW5pdERpc3BsYXkgOiB1aW50OF90IHsgU2hvcnQsIE5hcnJv
dywgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgQ29tcGFjdERpc3BsYXkgOiB1aW50OF90IHsgU2hv
cnQsIExvbmcgfTsKLSAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5IDogdWludDhfdCB7IEF1dG8s
IE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8gfTsKKyAgICBlbnVtIGNsYXNzIFNpZ25EaXNwbGF5
IDogdWludDhfdCB7IEF1dG8sIE5ldmVyLCBBbHdheXMsIEV4Y2VwdFplcm8sIE5lZ2F0aXZlIH07
CisgICAgZW51bSBjbGFzcyBUcmFpbGluZ1plcm9EaXNwbGF5IDogdWludDhfdCB7IEF1dG8sIFN0
cmlwSWZJbnRlZ2VyIH07CisgICAgZW51bSBjbGFzcyBVc2VHcm91cGluZyA6IHVpbnQ4X3QgeyBG
YWxzZSwgTWluMiwgQXV0bywgQWx3YXlzIH07CiAKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0
eWxlU3RyaW5nKFN0eWxlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxh
eVN0cmluZyhDdXJyZW5jeURpc3BsYXkpOwpAQCAtMTEzLDE0ICsyMjAsMTcgQEAgY2xhc3MgSW50
bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKICAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKICAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJvdW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOwor
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGlu
Z1plcm9EaXNwbGF5KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB1c2VHcm91cGluZ1ZhbHVlKFZNJiwg
VXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3Vu
ZEZvcm1hdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRURVIpCi0gICAgdXNpbmcgVU51
bWJlckZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlPjsKLSAgICB1c2lu
ZyBVRm9ybWF0dGVkTnVtYmVyRGVsZXRlciA9IElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9ybWF0dGVy
RGVsZXRlcj4gbV9udW1iZXJGb3JtYXR0ZXI7CisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0Vf
Rk9STUFUVEVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyUmFuZ2VGb3JtYXR0ZXIsIFVO
dW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXI7CisjZW5k
aWYKICNlbHNlCi0gICAgdXNpbmcgVU51bWJlckZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxldGVyPHVu
dW1fY2xvc2U+OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVy
PHVudW1fY2xvc2U+PiBtX251bWJlckZvcm1hdDsKICNlbmRpZgogCkBAIC0xMzMsNiArMjQzLDcg
QEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMgfTsKICAgICB1bnNp
Z25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21h
eGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3JvdW5kaW5nSW5j
cmVtZW50IHsgMSB9OwogICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6RGVjaW1hbCB9OwogICAg
IEN1cnJlbmN5RGlzcGxheSBtX2N1cnJlbmN5RGlzcGxheTsKICAgICBDdXJyZW5jeVNpZ24gbV9j
dXJyZW5jeVNpZ247CkBAIC0xNDAsNyArMjUxLDkgQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBDb21wYWN0RGlzcGxheSBtX2Nv
bXBhY3REaXNwbGF5OwogICAgIEludGxOb3RhdGlvbiBtX25vdGF0aW9uIHsgSW50bE5vdGF0aW9u
OjpTdGFuZGFyZCB9OwogICAgIFNpZ25EaXNwbGF5IG1fc2lnbkRpc3BsYXk7Ci0gICAgYm9vbCBt
X3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OworICAgIFRyYWlsaW5nWmVyb0Rpc3BsYXkgbV90cmFpbGlu
Z1plcm9EaXNwbGF5IHsgVHJhaWxpbmdaZXJvRGlzcGxheTo6QXV0byB9OworICAgIFVzZUdyb3Vw
aW5nIG1fdXNlR3JvdXBpbmcgeyBVc2VHcm91cGluZzo6QWx3YXlzIH07CisgICAgUm91bmRpbmdN
b2RlIG1fcm91bmRpbmdNb2RlIHsgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH07CiAgICAgSW50
bFJvdW5kaW5nVHlwZSBtX3JvdW5kaW5nVHlwZSB7IEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9u
RGlnaXRzIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAyM2QzODYzZDE2MDA0MzFlZjc0ZGY0
MGM4NzQ0NzE3NjZkMDUxNjlhLi4xYWY0MWVhMjEyM2I1ZDZmYTI5MWNhZmQzZjJlZjYyZGVhYjc4
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgIHsKIApAQCAtNjEsNDcgKzYyLDEzNSBAQCB2b2lkIHNldE51bWJlckZv
cm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsVHlwZSog
aW50bElucwogCiAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1JbnRlZ2VyRGlnaXRzID0gbWlu
aW11bUludGVnZXJEaWdpdHM7CiAKLSAgICBpZiAoIW1pbmltdW1TaWduaWZpY2FudERpZ2l0c1Zh
bHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxS
b3VuZGluZ1R5cGU6OlNpZ25pZmljYW50RGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1pbmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVt
U2lnbmlmaWNhbnREaWdpdHMsIDEsIDIxLCAxKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgdW5zaWduZWQgbWF4aW11bVNpZ25pZmljYW50RGln
aXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2JqZWN0LCBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWF4aW11bVNpZ25pZmljYW50RGln
aXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIDIxLCAyMSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIGludGxJbnN0YW5jZS0+bV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgICAg
IGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtYXhpbXVtU2lnbmlm
aWNhbnREaWdpdHM7Ci0gICAgICAgIHJldHVybjsKKyAgICBJbnRsUm91bmRpbmdQcmlvcml0eSBy
b3VuZGluZ1ByaW9yaXR5ID0gaW50bE9wdGlvbjxJbnRsUm91bmRpbmdQcmlvcml0eT4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ1ByaW9yaXR5LCB7IHsg
ImF1dG8iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvIH0sIHsgIm1vcmVQcmVjaXNpb24i
X3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpNb3JlUHJlY2lzaW9uIH0sIHsgImxlc3NQcmVjaXNp
b24iX3MsIEludGxSb3VuZGluZ1ByaW9yaXR5OjpMZXNzUHJlY2lzaW9uIH0gfSwgInJvdW5kaW5n
UHJpb3JpdHkgbXVzdCBiZSBlaXRoZXIgXCJhdXRvXCIsIFwibW9yZVByZWNpc2lvblwiLCBvciBc
Imxlc3NQcmVjaXNpb25cIiJfcywgSW50bFJvdW5kaW5nUHJpb3JpdHk6OkF1dG8pOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBib29sIGhhc1NkID0gIW1p
bmltdW1TaWduaWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1TaWdu
aWZpY2FudERpZ2l0c1ZhbHVlLmlzVW5kZWZpbmVkKCk7CisgICAgYm9vbCBoYXNGZCA9ICFtaW5p
bXVtRnJhY3Rpb25EaWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8ICFtYXhpbXVtRnJhY3Rpb25E
aWdpdHNWYWx1ZS5pc1VuZGVmaW5lZCgpOworICAgIGJvb2wgbmVlZFNkID0gaGFzU2QgfHwgcm91
bmRpbmdQcmlvcml0eSAhPSBJbnRsUm91bmRpbmdQcmlvcml0eTo6QXV0bzsKKyAgICBib29sIG5l
ZWRGZCA9ICghaGFzU2QgJiYgbm90YXRpb24gIT0gSW50bE5vdGF0aW9uOjpDb21wYWN0KSB8fCBy
b3VuZGluZ1ByaW9yaXR5ICE9IEludGxSb3VuZGluZ1ByaW9yaXR5OjpBdXRvOworCisgICAgaWYg
KG5lZWRTZCkgeworICAgICAgICBpZiAoaGFzU2QpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1p
bmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9i
amVjdCwgbWluaW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1p
bmltdW1TaWduaWZpY2FudERpZ2l0cywgMSwgMjEsIDEpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heGltdW1T
aWduaWZpY2FudERpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwg
bWF4aW11bVNpZ25pZmljYW50RGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1T
aWduaWZpY2FudERpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCAyMSwgMjEpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAg
IGludGxJbnN0YW5jZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHM7CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzID0gbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IDE7
CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0g
MjE7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1pbmltdW1GcmFjdGlvbkRpZ2l0c1Zh
bHVlLmlzVW5kZWZpbmVkKCkgfHwgIW1heGltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKLSAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIHVuZGVmaW5lZFZhbHVlID0gVUlO
VDMyX01BWDsKLSAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3Vu
ZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOwotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpZWRNaW5p
bXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3Qs
IG1pbmltdW1GcmFjdGlvbkRpZ2l0c1ZhbHVlLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVtRnJh
Y3Rpb25EaWdpdHMsIDAsIDIwLCB1bmRlZmluZWRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHNwZWNpZmllZE1heGlt
dW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVjdCwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFj
dGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgaWYgKHNwZWNpZmllZE1heGltdW1GcmFj
dGlvbkRpZ2l0cyAhPSB1bmRlZmluZWRWYWx1ZSkKLSAgICAgICAgICAgIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQgPSBzdGQ6Om1pbihtaW5pbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBz
cGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdpdHMpOwotICAgICAgICB1bnNpZ25lZCBtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChz
cGVjaWZpZWRNaW5pbXVtRnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRl
ZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmllZE1pbmltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnBy
b3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgMCwgMjAsIG1pbmltdW1GcmFjdGlv
bkRpZ2l0c0RlZmF1bHQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgICAgICB1bnNpZ25lZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBpbnRsRGVmYXVs
dE51bWJlck9wdGlvbihnbG9iYWxPYmplY3QsIChzcGVjaWZpZWRNYXhpbXVtRnJhY3Rpb25EaWdp
dHMgPT0gdW5kZWZpbmVkVmFsdWUpID8ganNVbmRlZmluZWQoKSA6IGpzTnVtYmVyKHNwZWNpZmll
ZE1heGltdW1GcmFjdGlvbkRpZ2l0cyksIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1GcmFjdGlv
bkRpZ2l0cywgMCwgMjAsIHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cykpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgICAgICBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZy
YWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBt
YXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmIChu
ZWVkRmQpIHsKKyAgICAgICAgaWYgKGhhc0ZkKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5z
aWduZWQgdW5kZWZpbmVkVmFsdWUgPSBVSU5UMzJfTUFYOworICAgICAgICAgICAgdW5zaWduZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzID0gaW50bERlZmF1bHROdW1iZXJPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHNWYWx1ZSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11
bUZyYWN0aW9uRGlnaXRzLCAwLCAyMCwgdW5kZWZpbmVkVmFsdWUpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1h
eGltdW1GcmFjdGlvbkRpZ2l0cyA9IGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKGdsb2JhbE9iamVj
dCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzVmFsdWUsIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1G
cmFjdGlvbkRpZ2l0cywgMCwgMjAsIHVuZGVmaW5lZFZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAgIGlmIChtaW5pbXVt
RnJhY3Rpb25EaWdpdHMgPT0gdW5kZWZpbmVkVmFsdWUpCisgICAgICAgICAgICAgICAgbWluaW11
bUZyYWN0aW9uRGlnaXRzID0gc3RkOjptaW4obWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFj
dGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXhpbXVtRnJh
Y3Rpb25EaWdpdHMgPSBzdGQ6Om1heChtYXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5p
bXVtRnJhY3Rpb25EaWdpdHMpOworICAgICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9u
RGlnaXRzID4gbWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25E
aWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAg
ICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZy
YWN0aW9uRGlnaXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50bEluc3RhbmNl
LT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7
CisgICAgICAgICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4
aW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdDsKICAgICAgICAgfQotICAgICAgICBpbnRsSW5zdGFu
Y2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWluaW11bUZyYWN0aW9uRGlnaXRzOwotICAg
ICAgICBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0
aW9uRGlnaXRzOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG5vdGF0aW9uID09
IEludGxOb3RhdGlvbjo6Q29tcGFjdCkgewotICAgICAgICBpbnRsSW5zdGFuY2UtPm1fcm91bmRp
bmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6Q29tcGFjdFJvdW5kaW5nOwotICAgICAgICByZXR1
cm47CisgICAgaWYgKG5lZWRTZCB8fCBuZWVkRmQpIHsKKyAgICAgICAgaWYgKHJvdW5kaW5nUHJp
b3JpdHkgPT0gSW50bFJvdW5kaW5nUHJpb3JpdHk6Ok1vcmVQcmVjaXNpb24pCisgICAgICAgICAg
ICBpbnRsSW5zdGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6TW9yZVBy
ZWNpc2lvbjsKKyAgICAgICAgZWxzZSBpZiAocm91bmRpbmdQcmlvcml0eSA9PSBJbnRsUm91bmRp
bmdQcmlvcml0eTo6TGVzc1ByZWNpc2lvbikKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOworICAgICAgICBl
bHNlIGlmIChoYXNTZCkKKyAgICAgICAgICAgIGludGxJbnN0YW5jZS0+bV9yb3VuZGluZ1R5cGUg
PSBJbnRsUm91bmRpbmdUeXBlOjpTaWduaWZpY2FudERpZ2l0czsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9IEludGxSb3VuZGluZ1R5cGU6
OkZyYWN0aW9uRGlnaXRzOworICAgIH0gZWxzZSB7CisgICAgICAgIGludGxJbnN0YW5jZS0+bV9y
b3VuZGluZ1R5cGUgPSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOworICAgICAgICBp
bnRsSW5zdGFuY2UtPm1fbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKyAgICAgICAgaW50bElu
c3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7CisgICAgICAgIGludGxJbnN0YW5j
ZS0+bV9taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSAxOworICAgICAgICBpbnRsSW5zdGFuY2Ut
Pm1fbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gMjsKICAgICB9Cit9CiAKLSAgICBpbnRsSW5z
dGFuY2UtPm1fcm91bmRpbmdUeXBlID0gSW50bFJvdW5kaW5nVHlwZTo6RnJhY3Rpb25EaWdpdHM7
Ci0gICAgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFj
dGlvbkRpZ2l0c0RlZmF1bHQ7Ci0gICAgaW50bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRp
Z2l0cyA9IG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnRsVHlwZT4KK3ZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJ
bnRsVHlwZSogaW50bEluc3RhbmNlLCBTdHJpbmdCdWlsZGVyJiBza2VsZXRvbkJ1aWxkZXIpCit7
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13
aWR0aAorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6
SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2
NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtSW50ZWdlckRpZ2l0czsgKytpKQorICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICBpZiAoaW50bEluc3RhbmNlLT5t
X3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIHByZWNpc2lvbi1pbmNyZW1lbnQvIik7CisgICAgICAgIGF1dG8gc3RyaW5nID0gbnVtYmVy
VG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDEwPj4oaW50bEluc3RhbmNlLT5tX3JvdW5k
aW5nSW5jcmVtZW50KTsKKyAgICAgICAgaWYgKGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rp
b25EaWdpdHMgPj0gc3RyaW5nLnNpemUoKSkgeworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiMC4iKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAoaW50
bEluc3RhbmNlLT5tX21heGltdW1GcmFjdGlvbkRpZ2l0cyAtIHN0cmluZy5zaXplKCkpOyArK2kp
CisgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmRhdGEoKSwgc3RyaW5n
LnNpemUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBub25GcmFj
dGlvbiA9IHN0cmluZy5zaXplKCkgLSBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGln
aXRzOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3RyaW5n
LmRhdGEoKSwgbm9uRnJhY3Rpb24pOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgnLicpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoc3Ry
aW5nLmRhdGEoKSArIG5vbkZyYWN0aW9uLCBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9u
RGlnaXRzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAoaW50bElu
c3RhbmNlLT5tX3JvdW5kaW5nVHlwZSkgeworICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6
OkZyYWN0aW9uRGlnaXRzOiB7CisgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5p
Y29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1i
ZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb24KKyAgICAgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIC0g
aW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytpKQorICAgICAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSW50bFJvdW5kaW5nVHlwZTo6U2lnbmlmaWNhbnREaWdpdHM6
IHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I3NpZ25pZmljYW50LWRpZ2l0cy1wcmVjaXNpb24KKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRs
SW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQCcpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgLSBp
bnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOyArK2kpCisgICAgICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpNb3JlUHJlY2lzaW9uOgor
ICAgICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Okxlc3NQcmVjaXNpb246CisgICAgICAgICAg
ICAvLyBCZWZvcmUgSW50bC5OdW1iZXJGb3JtYXQgdjMsIGl0IHdhcyBDb21wYWN0Um91bmRpbmcg
bW9kZSwgd2hlcmUgd2UgZG8gbm90IGNvbmZpZ3VyZSBhbnl0aGluZy4KKyAgICAgICAgICAgIC8v
IFNvLCBpZiBsaW5rZWQgSUNVIGlzIH42OCwgd2UgZG8gbm90aGluZy4KKyAgICAgICAgICAgIGlm
IChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjkpIHsKKyAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC9kN2RiNmMxZjg2NTViYjUz
MTUzNjk1YjA5YTUwMDI5ZmQwNGE4MzY0CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21haW4vZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3Bh
cnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3ByZWNpc2lvbgorICAgICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiAuIik7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGludGxJbnN0YW5jZS0+bV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7ICsraSkKKyAg
ICAgICAgICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWF4aW11bUZy
YWN0aW9uRGlnaXRzIC0gaW50bEluc3RhbmNlLT5tX21pbmltdW1GcmFjdGlvbkRpZ2l0czsgKytp
KQorICAgICAgICAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAg
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRsSW5zdGFuY2UtPm1fbWluaW11bVNpZ25pZmlj
YW50RGlnaXRzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJ0AnKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW50bElu
c3RhbmNlLT5tX21heGltdW1TaWduaWZpY2FudERpZ2l0cyAtIGludGxJbnN0YW5jZS0+bV9taW5p
bXVtU2lnbmlmaWNhbnREaWdpdHM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoaW50bEluc3RhbmNlLT5tX3JvdW5kaW5nVHlwZSA9PSBJbnRsUm91bmRpbmdUeXBlOjpNb3Jl
UHJlY2lzaW9uID8gJ3InIDogJ3MnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQogfQogCiBjbGFzcyBJbnRsRmllbGRJdGVyYXRvciB7CkBAIC0x
MjgsNCArMjE3LDU3IEBAIGlubGluZSBJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0
Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHVud3Jh
cEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRDb25zdHJ1Y3RvcigpKTsKIH0K
IAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVtYmVyZm9ybWF0LXYzL291dC9u
dW1iZXJmb3JtYXQvZGlmZi5odG1sI3NlYy10b2ludGxtYXRoZW1hdGljYWx2YWx1ZQoraW5saW5l
IEludGxNYXRoZW1hdGljYWxWYWx1ZSB0b0ludGxNYXRoZW1hdGljYWxWYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJsZSh2YWx1
ZSkpCisgICAgICAgIHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBudW1iZXIudmFsdWUo
KSB9OworCisgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGU6OlByZWZlck51bWJlcik7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gYmlnSW50VG9JbnRsTWF0aGVt
YXRpY2FsVmFsdWUgPSBbXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKSAtPiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBKU0JpZ0ludDo6dHJ5RXh0cmFjdERvdWJs
ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsgbnVt
YmVyLnZhbHVlKCkgfTsKKworICAgICAgICBhdXRvKiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBCaWdJ
bnQoKTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVj
dCwgMTApOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsKKyAgICAgICAgICAgIEludGxNYXRoZW1h
dGljYWxWYWx1ZTo6TnVtYmVyVHlwZTo6SW50ZWdlciwKKyAgICAgICAgICAgIGJpZ0ludC0+c2ln
bigpLAorICAgICAgICAgICAgc3RyaW5nLmFzY2lpKCksCisgICAgICAgIH07CisgICAgfTsKKwor
ICAgIGlmIChwcmltaXRpdmUuaXNCaWdJbnQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiaWdJbnRUb0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHByaW1p
dGl2ZSkpOworCisgICAgaWYgKCFwcmltaXRpdmUuaXNTdHJpbmcoKSkKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBwcmltaXRpdmUudG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KSB9KTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyhw
cmltaXRpdmUpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmlnSW50OjpzdHJpbmdUb0Jp
Z0ludChnbG9iYWxPYmplY3QsIHN0cmluZyk7CisgICAgaWYgKGJpZ0ludCkgeworICAgICAgICAv
LyBJZiBpdCBpcyAtMCwgd2UgY2Fubm90IGhhbmRsZSBpdCBpbiBKU0JpZ0ludC4gUmVwYXJzZSB0
aGUgc3RyaW5nIGFzIGRvdWJsZS4KKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChiaWdJ
bnQuaXNCaWdJbnQzMigpICYmICF2YWx1ZS5iaWdJbnQzMkFzSW50MzIoKSkKKyAgICAgICAgICAg
IHJldHVybiBJbnRsTWF0aGVtYXRpY2FsVmFsdWUgeyBqc1RvTnVtYmVyKHN0cmluZykgfTsKKyNl
bmRpZgorICAgICAgICBpZiAoYmlnSW50LmlzSGVhcEJpZ0ludCgpICYmICFhc0hlYXBCaWdJbnQo
YmlnSW50KS0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZh
bHVlIHsganNUb051bWJlcihzdHJpbmcpIH07CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50VG9JbnRsTWF0aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCBiaWdJbnQp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gSW50bE1hdGhlbWF0aWNhbFZhbHVlIHsganNUb051bWJl
cihzdHJpbmcpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNw
cAppbmRleCBkZWYwMjliMTRkZDNiOWVlYmJhYTY0MzljNGUwYjRmM2E0NmJlNzI4Li5jYmVmNjA5
MDk5NzJkNmFjMmI2ZThkZmVkOWNkMDQ0NDYwNmYyMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMzksNiArMzksMTAgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0KTsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0UmFuZ2UpOworI2VuZGlmCisKIH0KIAogI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUubHV0LmgiCkBAIC01NSwxMCArNTksMTAgQEAgY29uc3QgQ2xhc3NJbmZv
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuTnVtYmVyRm9ybWF0
IiwgJkJhc2UKIEBlbmQKICovCiAKLUludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTcy
LDExICs3NiwxNSBAQCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogewogfQogCi12b2lkIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhP
VVRfVFJBTlNJVElPTigpOworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworI2lmIEhB
VkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigiZm9ybWF0UmFuZ2UiLCBpbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFJhbmdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7CisjZW5kaWYKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1udW1iZXItZm9ybWF0LWZ1bmN0aW9ucwpAQCAtODYsMjYgKzk0LDEzIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgewotICAgICAgICBk
b3VibGUgdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOwotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUp
KTsKLSAgICB9CisgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoYmlnSW50T3JOdW1i
ZXIuaXNCaWdJbnQzMigpKSB7Ci0gICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgYmlnSW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1h
dChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChhdXRvIG51
bWJlciA9IHZhbHVlLnRyeUdldERvdWJsZSgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3Qs
IG51bWJlci52YWx1ZSgpKSkpOwogCi0gICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJp
Z0ludCgpKTsKLSAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJ
bnQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGds
b2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIFdURk1vdmUodmFs
dWUpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTEzNyw2ICsxMzIsMzggQEAg
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5k
Rm9ybWF0KTsKIH0KIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZv
ck9sZEZ1bmN0aW9ucy4KKyAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PElu
dGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVO
TElLRUxZKCFudW1iZXJGb3JtYXQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3Jt
YXQiX3MpKTsKKworICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgSlNWYWx1ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisKKyAg
ICBpZiAoc3RhcnRWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVlLmlzVW5kZWZpbmVkKCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
dGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zKTsKKworICAgIGF1dG8gc3RhcnQgPSB0b0ludGxN
YXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGVuZCA9IHRvSW50bE1hdGhlbWF0
aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgZW5kVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byBzdGFydE51bWJlciA9IHN0YXJ0LnRyeUdl
dERvdWJsZSgpKSB7CisgICAgICAgIGlmIChhdXRvIGVuZE51bWJlciA9IGVuZC50cnlHZXREb3Vi
bGUoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydE51bWJlci52
YWx1ZSgpLCBlbmROdW1iZXIudmFsdWUoKSkpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFJhbmdlKGds
b2JhbE9iamVjdCwgV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSkpKTsKK30KKyNlbmRpZgor
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE1MCwx
MCArMTc3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbE9iCiAgICAgaWYgKFVOTElLRUxZKCFu
dW1iZXJGb3JtYXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykp
OwogCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gdmFsdWUgPSB0
b0ludGxNYXRoZW1hdGljYWxWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0
byBudW1iZXIgPSB2YWx1ZS50cnlHZXREb3VibGUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGds
b2JhbE9iamVjdCwgbnVtYmVyLnZhbHVlKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSkpKTsKKyNlbHNlCiAgICAgZG91YmxlIHZhbHVlID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpKTsKKyNlbmRpZgogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKaW5kZXggNjE3
NWY5ZGQwOTM3OTI5ZjhmZWJkYWNiYzRlOGZjZGQ0NmJjMzc0My4uMDMzN2Q2MGY2Njc4NDBiY2Mw
NGEzMjQ4M2JjZTBhNmE0NjNlNWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
SW5saW5lcy5oCmluZGV4IDZhMDBhYjcwODljZWY4NmI2YWY1YTg0YzAxOTZlOGY0MTI0NjM2MWEu
LjQxYzJiZmRmNmVlNTE1YzIzNGRjYmNlNjBjZGIzMzAzZWFiMzBhZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTUxLDYg
KzE1MSw0NSBAQCBSZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TgogICAgIHJldHVybiBmYWxsYmFjazsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK1Jlc3VsdFR5cGUgaW50bFN0cmlu
Z09yQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCog
b3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVz
dWx0VHlwZSBmYWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJ
TGl0ZXJhbCwgUmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2Fn
ZSwgUmVzdWx0VHlwZSBmYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L25lZ290aWF0aW9uL2RpZmYuaHRtbCNzZWMtZ2V0
c3RyaW5nb3Jib29sZWFub3B0aW9uCisKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA+IDApOwor
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJu
IGZhbGxiYWNrOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9wdGlvbnMtPmdldChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xl
YW4oKSAmJiB2YWx1ZS5hc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlVmFsdWU7
CisKKyAgICAgICAgYm9vbCB2YWx1ZUJvb2xlYW4gPSB2YWx1ZS50b0Jvb2xlYW4oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAg
ICBpZiAoIXZhbHVlQm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzeVZhbHVlOworCisg
ICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IHZhbHVlcykgeworICAgICAgICAgICAgaWYgKGVudHJ5
LmZpcnN0ID09IHN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5zZWNv
bmQ7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIG5vdEZvdW5kTWVzc2FnZSkpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBmYWxsYmFjazsKK30KIAogQUxX
QVlTX0lOTElORSBib29sIGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKFVDaGFyIGNoYXJh
Y3RlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCmluZGV4IGQ4YmM5NjY5ZmNiYWMyZTIwOWFlNDU0ZDYyYmZjM2QyOGEzNWU0ODku
Ljg0MmQzZmE5YTMxZTM3NjMyMTBmMWQ0OWNhOTdjMGNiNzUxNGRjYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMzIsOCAr
MzIsMjYgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKIAorI2lmZGVmIFVfSElERV9EUkFGVF9BUEkKKyN1bmRlZiBVX0hJREVfRFJBRlRf
QVBJCisjZW5kaWYKKyNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgorI2lmIEhBVkUo
SUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKKyNpbmNsdWRlIDx1bmljb2RlL3VudW1iZXJmb3JtYXR0
ZXIuaD4KKyNlbmRpZgorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikKKyNp
bmNsdWRlIDx1bmljb2RlL3VudW1iZXJyYW5nZWZvcm1hdHRlci5oPgorI2VuZGlmCisjZGVmaW5l
IFVfSElERV9EUkFGVF9BUEkgMQorCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBVUGx1cmFsUnVs
ZXNEZWxldGVyOjpvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMpCit7CisgICAg
aWYgKHBsdXJhbFJ1bGVzKQorICAgICAgICB1cGxydWxlc19jbG9zZShwbHVyYWxSdWxlcyk7Cit9
CisKIGNvbnN0IENsYXNzSW5mbyBJbnRsUGx1cmFsUnVsZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bFBsdXJhbFJ1bGVzKSB9OwogCiB1c2luZyBVRW51bWVyYXRpb25EZWxldGVyID0gSUNVRGVsZXRl
cjx1ZW51bV9jbG9zZT47CkBAIC0xMDcsOCArMTI1LDM0IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVz
Ojppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1CiAgICAgc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zKGdsb2JhbE9iamVjdCwgdGhpcywg
b3B0aW9ucywgMCwgMywgSW50bE5vdGF0aW9uOjpTdGFuZGFyZCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAorICAgIGF1dG8gbG9jYWxlID0gbV9sb2NhbGUudXRm
OCgpOwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIG1fbnVtYmVy
Rm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxl
dGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBtX2xvY2FsZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JN
QVRURVIpCisgICAgU3RyaW5nQnVpbGRlciBza2VsZXRvbkJ1aWxkZXI7CisgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisKKyAgICBhcHBlbmROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKHRoaXMsIHNrZWxldG9uQnVpbGRlcik7CisK
KyAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBT
dHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7CisgICAgYXV0byB1cGNvbnZlcnRlZCA9
IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKworICAgIG1fbnVtYmVyRm9y
bWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0
ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tlbGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0
KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgbG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFU
VEVSKQorICAgIG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJl
clJhbmdlRm9ybWF0dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3Bl
bkZvclNrZWxldG9uV2l0aENvbGxhcHNlQW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5n
ZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVO
VU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFOR0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0
dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVz
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2Vsc2UKKyAgICBtX251bWJl
ckZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVs
ZXRlcj4odW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgbG9jYWxlLmRhdGEoKSwg
bnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CkBAIC0xMjUsMTMgKzE2OSwxMyBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251
bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9NSU5fU0lHTklGSUNBTlRfRElHSVRTLCBtX21pbmltdW1T
aWduaWZpY2FudERpZ2l0cyk7CiAgICAgICAgIHVudW1fc2V0QXR0cmlidXRlKG1fbnVtYmVyRm9y
bWF0LmdldCgpLCBVTlVNX01BWF9TSUdOSUZJQ0FOVF9ESUdJVFMsIG1fbWF4aW11bVNpZ25pZmlj
YW50RGlnaXRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQ
cmVjaXNpb246CisgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgogICAg
ICAgICBicmVhazsKICAgICB9CisjZW5kaWYKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBsdXJh
bFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobV9sb2NhbGUudXRmOCgpLmRhdGEo
KSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVS
QUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOworICAgIG1fcGx1cmFsUnVsZXMgPSBzdGQ6OnVu
aXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxydWxlc19vcGVu
Rm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/IFVQTFVSQUxf
VFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE1OSw4ICsyMDMsMTIgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25p
ZmljYW50RGlnaXRzLCBqc051bWJlcihtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOwogICAg
ICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWdu
aWZpY2FudERpZ2l0cywganNOdW1iZXIobV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6Ok1vcmVQcmVjaXNpb246CisgICAg
Y2FzZSBJbnRsUm91bmRpbmdUeXBlOjpMZXNzUHJlY2lzaW9uOgorICAgICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1pbmltdW1GcmFjdGlvbkRpZ2l0cywganNO
dW1iZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKKyAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tYXhpbXVtRnJhY3Rpb25EaWdpdHMsIGpzTnVtYmVy
KG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBqc051bWJlciht
X21pbmltdW1TaWduaWZpY2FudERpZ2l0cykpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1heGltdW1TaWduaWZpY2FudERpZ2l0cywganNOdW1iZXIo
bV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC0xODMsOCArMjMxLDkgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdv
cmllcyk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3Vu
ZGluZ01vZGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgSW50bE51bWJlckZvcm1hdDo6cm91bmRp
bmdQcmlvcml0eVN0cmluZyhtX3JvdW5kaW5nVHlwZSkpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbApAQCAtMTk5LDEyICsyNDgsNTcg
QEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIm90aGVyIl9zKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfRk9STUFUVEVSKQorICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8
dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgIHVu
dW1mX2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRl
ZE51bWJlci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7
CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVwbHJ1bGVzX3NlbGVj
dEZvcm1hdHRlZCwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCBi
dWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2
YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIp
KSk7CisjZWxzZQogICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0KDgpOwogICAgIGF1dG8gbGVu
Z3RoID0gdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChtX3BsdXJhbFJ1bGVzLmdldCgpLCB2YWx1
ZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZz
dGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2
YWx1ZSJfcyk7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgp
LCBsZW5ndGgpKTsKKyNlbmRpZgorfQorCisjaWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9S
TUFUVEVSKQorSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwg
SUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVz
KSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1
cmFsIHZhbHVlIl9zKTsKKworICAgIHVudW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJh
bmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZh
bHVlIl9zKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1fcGx1
cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5oCmluZGV4IDZkM2FjYWI4NGU4MTRlNWY3YzA3ZDAyNGYzZTI1ZmYyZTVmMGY2ZTQuLmVi
YzA0YWE1Nzk5Y2U2Y2NhOGQzZGJmY2U5ZjgwNmE4MzY2MWVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC0yOCwxMSArMjgsMTYg
QEAKIAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vu
dW0uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VwbHVyYWxydWxlcy5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CiAKK3N0cnVjdCBVUGx1cmFsUnVsZXM7CisKIG5hbWVz
cGFjZSBKU0MgewogCitzdHJ1Y3QgVVBsdXJhbFJ1bGVzRGVsZXRlciB7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBvcGVyYXRvcigpKFVQbHVyYWxSdWxlcyopOworfTsKKwogZW51bSBjbGFz
cyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEludGxQbHVyYWxSdWxl
cyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTU5LDExICs2NCwxNyBAQCBj
bGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBzZXROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBJbnRsVHlwZSosIEpTT2JqZWN0
KiwgdW5zaWduZWQgbWluaW11bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgdW5zaWduZWQgbWF4aW11
bUZyYWN0aW9uRGlnaXRzRGVmYXVsdCwgSW50bE5vdGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRsVHlwZT4KKyAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3JtYXREaWdpdE9w
dGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAgdm9pZCBp
bml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpT
VmFsdWUgb3B0aW9ucyk7CiAgICAgSlNWYWx1ZSBzZWxlY3QoSlNHbG9iYWxPYmplY3QqLCBkb3Vi
bGUgdmFsdWUpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKIAorI2lmIEhBVkUoSUNVX1VfTlVNQkVSX1JBTkdFX0ZPUk1BVFRFUikK
KyAgICBKU1ZhbHVlIHNlbGVjdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEludGxQbHVyYWxSdWxl
cyhWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTcz
LDExICs4NCwxNiBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgQ2FyZGluYWwsIE9y
ZGluYWwgfTsKIAotICAgIHVzaW5nIFVQbHVyYWxSdWxlc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVw
bHJ1bGVzX2Nsb3NlPjsKLSAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElDVURlbGV0
ZXI8dW51bV9jbG9zZT47Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1
cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOworI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZP
Uk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZv
cm1hdHRlckRlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0dGVyOworI2lmIEhBVkUoSUNVX1VfTlVNQkVS
X1JBTkdFX0ZPUk1BVFRFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0
dGVyLCBVTnVtYmVyUmFuZ2VGb3JtYXR0ZXJEZWxldGVyPiBtX251bWJlclJhbmdlRm9ybWF0dGVy
OworI2VuZGlmCisjZWxzZQorICAgIHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVs
ZXRlcjx1bnVtX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51
bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworI2VuZGlmCiAKICAgICBTdHJpbmcg
bV9sb2NhbGU7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKQEAg
LTg1LDYgKzEwMSw3IEBAIGNsYXNzIEludGxQbHVyYWxSdWxlcyBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlvbkRpZ2l0cyB7IDMg
fTsKICAgICB1bnNpZ25lZCBtX21pbmltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKICAgICB1
bnNpZ25lZCBtX21heGltdW1TaWduaWZpY2FudERpZ2l0cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X3JvdW5kaW5nSW5jcmVtZW50IHsgMSB9OwogICAgIEludGxSb3VuZGluZ1R5cGUgbV9yb3VuZGlu
Z1R5cGUgeyBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cyB9OwogICAgIFR5cGUgbV90
eXBlIHsgVHlwZTo6Q2FyZGluYWwgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAppbmRleCBjODBi
ZmEyMjIzZmQ1MGU4Yjk3ODE4Y2VkNGIwNzU4YmJjZGU2YzI3Li5lYzY5ZmUyOWJiMjM5ODBjNjQ3
YmE0YWYwNjRiMTg2ODcxNmE5YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMz
LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KTsKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihp
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2UpOworI2VuZGlmCiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKTsKIAogfQpAQCAtNTAsMTAgKzUzLDEwIEBAIGNvbnN0IENsYXNzSW5mbyBJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuUGx1cmFsUnVsZXMiLCAm
QmFzZTo6CiBAZW5kCiAqLwogCi1JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZT4o
dm0uaGVhcCkpIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKQEAgLTY3LDExICs3MCwx
NSBAQCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyNpZiBIQVZFKElDVV9VX05V
TUJFUl9SQU5HRV9GT1JNQVRURVIpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VsZWN0UmFuZ2UsIGludGxQbHVyYWxSdWxlc1By
b3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDApOworI2VuZGlmCiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNiArOTksMjcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxl
Y3QsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7
CiB9CiAKKyNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JNQVRURVIpCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdFJhbmdlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50
bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2RpZmYuaHRtbCNzZWMtaW50bC5wbHVy
YWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKKyAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJh
bFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbHVyYWxSdWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVy
YWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBQbHVyYWxSdWxlcyJfcykpOworCisgICAgZG91YmxlIHN0YXJ0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgZW5kID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50
b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVy
YWxSdWxlcy0+c2VsZWN0UmFuZ2UoZ2xvYmFsT2JqZWN0LCBzdGFydCwgZW5kKSkpOworfQorI2Vu
ZGlmCisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmgKaW5kZXggNmZhYTNhNGY3OGFlYTU5ODQzMmNiMTMwMzdmMTAzNTkzNjI1MDg0
Yi4uNjFlMDhiMmY0ZDJjYWIwNjNjNzVjNjk3NmMxYjM2MGZhZmU1ZmQwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwcml2YXRlOgogICAgIEludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCAwYjU5NjYxMmZm
OGMzNWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1Li5jMjUzODUwMGZiOGUzNDE3Y2JmMWM2MDhh
ZWQ1MjFiNzU0YmU5YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIEpT
VmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICBJbnRsRmllbGRJdGVy
YXRvciBmaWVsZEl0ZXJhdG9yKCppdGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3Jt
YXQ6OlN0eWxlOjpEZWNpbWFsLCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJh
dG9yLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxP
YmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBzdGQ6OnNpZ25iaXQoYWJz
VmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKGFic1Zh
bHVlKSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywganNTdHJpbmcodm0s
IHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4
Li5iNzYzMTY3MTQxNGM5M2M1ZmQ4NDQ5M2NjNDlhM2EzNzc2MjQ4MTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ2Miw2ICs0NjIsOCBAQCBjbGFzcyBK
U0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaGFzaFNsb3co
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRyeUV4dHJhY3RE
b3VibGUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUq
LCBEaWdpdCosIHVuc2lnbmVkIGxlbmd0aCk7CiAKQEAgLTY3Niw0ICs2NzgsNDIgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50KiBiaWdJbnQpCiAg
ICAgcmV0dXJuIGJpZ0ludDsKIH0KIAorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gSlNCaWdJbnQ6OnRyeUV4dHJhY3REb3VibGUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAo
dmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzTnVtYmVyKCk7CisKKyAg
ICBpZiAoIXZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCisKKyAgICBBU1NFUlQodmFs
dWUuaXNIZWFwQmlnSW50KCkpOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSB2YWx1ZS5hc0hlYXBC
aWdJbnQoKTsKKyAgICBpZiAoIWJpZ0ludC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgdWludDY0X3QgaW50ZWdlciA9IDA7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoRGln
aXQpID09IDgpIHsKKyAgICAgICAgaWYgKGJpZ0ludC0+bGVuZ3RoKCkgIT0gMSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGludGVnZXIgPSBiaWdJbnQtPmRpZ2l0
KDApOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoRGlnaXQpID09IDQpOwor
ICAgICAgICBpZiAoYmlnSW50LT5sZW5ndGgoKSA+IDIpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICBpbnRlZ2VyID0gYmlnSW50LT5kaWdpdCgwKTsKKyAgICAgICAg
aWYgKGJpZ0ludC0+bGVuZ3RoKCkgPT0gMikKKyAgICAgICAgICAgIGludGVnZXIgfD0gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihiaWdJbnQtPmRpZ2l0KDEpKSA8PCAzMik7CisgICAgfQorCisgICAg
aWYgKGludGVnZXIgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKQor
ICAgICAgICByZXR1cm4gKGJpZ0ludC0+c2lnbigpKSA/IC1zdGF0aWNfY2FzdDxkb3VibGU+KGlu
dGVnZXIpIDogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKTsKKworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGRhOTIwZTFiMjEzNTcwNjA5ZjI2N2ZhMmE3NjJl
OTg1MTEyNWQ3ZGUuLjRhYzNkZDk1MzZmOGQyMjQyZTY0ZWRhNjc0NDYyYWU3YWY1NTYzOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKQEAgLTYzLDYgKzYz
LDExIEBAIGlubGluZSBib29sIGlzU2FmZUludGVnZXIoZG91YmxlIHZhbHVlKQogICAgIHJldHVy
biBzdGQ6OnRydW5jKHZhbHVlKSA9PSB2YWx1ZSAmJiBzdGQ6OmFicyh2YWx1ZSkgPD0gbWF4U2Fm
ZUludGVnZXIoKTsKIH0KIAoraW5saW5lIGJvb2wgaXNOZWdhdGl2ZVplcm8oZG91YmxlIHZhbHVl
KQoreworICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpICYmIHZhbHVlID09IDA7Cit9CisK
IC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5
LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMg
aWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KIC8vIG9m
IHRoZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBj
YWxsZWQgdG8gaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggZmYwYmNmZGNmODJkMjIxZDFlY2I4NWE4YzFiNDZiNjUx
YjRkYjczNS4uNmYwODg3NDk1ZmVjOWRlOTFiZWRiMTVhYjFlYTYwMGVhNjQwMGU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAt
NDMwLDYgKzQzMCwxNCBAQCBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUgeCwg
ZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6
OnRydW5jKHF1b3RpZW50KSAqIGluY3JlbWVudDsKICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFs
ZkV4cGFuZDoKICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQocXVvdGllbnQpICogaW5jcmVtZW50
OworCisgICAgLy8gVGhleSBhcmUgbm90IHN1cHBvcnRlZCBpbiBUZW1wb3JhbCByaWdodCBub3cu
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkV4cGFuZDoKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6
SGFsZkNlaWw6CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZGbG9vcjoKKyAgICBjYXNlIFJv
dW5kaW5nTW9kZTo6SGFsZlRydW5jOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXZlbjoK
KyAgICAgICAgcmV0dXJuIHN0ZDo6dHJ1bmMocXVvdGllbnQpICogaW5jcmVtZW50OwogICAgIH0K
IAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA3OTE1Nzk4Y2RiOThhYjc0NTgz
YjhjOGFjMzZhNTVkMWI0NWYxYzE0Li5kOWZkZGYyN2ZmZWZlNjY5ZGNmZTdhNjhhM2QyOTcyN2M4
Y2FkMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmgKQEAgLTc5LDggKzc5LDEzIEBAIGNsYXNzIFRlbXBvcmFsT2JqZWN0IGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90
IHsKICAgICBDZWlsLAogICAgIEZsb29yLAorICAgIEV4cGFuZCwKICAgICBUcnVuYywKLSAgICBI
YWxmRXhwYW5kCisgICAgSGFsZkNlaWwsCisgICAgSGFsZkZsb29yLAorICAgIEhhbGZFeHBhbmQs
CisgICAgSGFsZlRydW5jLAorICAgIEhhbGZFdmVuCiB9OwogCiBlbnVtIGNsYXNzIFByZWNpc2lv
biA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCA3NjRiOTIxNjI5NDA1Njc4NTFiYjRhYzhjN2ZlMjk3MzVkNDA1NGQ5Li5i
ZjQ3OTZiMTU3NTA0NzlhZTEyZTE5ZDMxN2IzZjI4N2M4N2VkZWM2IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisy
MDIxLTEwLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IEludGxOdW1iZXJGb3JtYXQgdjMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZv
cm1hdC1sYXJnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1yYW5nZS12My5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGROb3RU
aHJvdyk6CisgICAgICAgIChuZi5mb3JtYXRSYW5nZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mb3JF
YWNoKToKKyAgICAgICAgKG5mLmZvcm1hdFJhbmdlVG9QYXJ0cy52YWxpZFJhbmdlcy5mb3JFYWNo
KToKKyAgICAgICAgKG5mNi5mb3JtYXRSYW5nZS5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmctdjMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQt
c3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3Mv
aW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzOgorICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodmFsaWRSb3VuZGluZ0luY3Jl
bWVudHMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5k
aW5nLWluY3JlbWVudC12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgICh2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKToKKyAgICAgICAgKGludmFsaWRS
b3VuZGluZ0luY3JlbWVudHMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS1oYW5pZGVjLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRp
bmctaW5jcmVtZW50LXZhbHVlLXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS10YWJsZS12My5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChPYmplY3Qua2V5cy5leHBlY3RhdGlvbnMuZm9yRWFjaCk6Cisg
ICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLW1vZGUtdjMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAodmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaCk6CisgICAgICAgIChpbnZhbGlkUm91bmRpbmdN
b2RlLmZvckVhY2gpOgorICAgICAgICAobGV0Lm9wdGlvbnMuZ2V0IHNpZ25EaXNwbGF5KToKKyAg
ICAgICAgKGxldC5vcHRpb25zLmdldCByb3VuZGluZ01vZGUpOgorICAgICAgICAqIHN0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1zaWduLWRpc3BsYXktdjMuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC10cmFpbGluZy16ZXJv
LWRpc3BsYXktcmVzb2x2ZWQtb3B0aW9ucy12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlz
cGxheS12My5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNz
L2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZhbGlkVXNlR3JvdXBp
bmcuZm9yRWFjaCk6CisgICAgICAgIChpbnZhbGlkVXNlR3JvdXBpbmcuZm9yRWFjaCk6CisgICAg
ICAgIChhbGwuZm9yRWFjaCk6CisgICAgICAgIChtZ2QxLmZvckVhY2gpOgorICAgICAgICAobWdk
Mi5mb3JFYWNoKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanM6CisgICAg
ICAgICh0ZXN0TnVtYmVyRm9ybWF0KToKKyAgICAgICAgKHNob3VsZEJlLnRlc3ROdW1iZXJGb3Jt
YXQuSW50bC5OdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLXBsdXJhbHJ1bGVz
LXNlbGVjdHJhbmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiB0
ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTEwLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZWl2ZXdlZCwgZml4IENMb29wIGJ1aWxkIGFuZCB0
ZXN0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LWZvcm1hdC1sYXJnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1h
dC1sYXJnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk0ZjU3OWQ2OWIwMDM0MWMzOWVmZmFmZGU1OWZlNGE0
OWZjNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQtZm9ybWF0LWxhcmdlLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7
Cit9CisKK2NvbnN0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIpOworY29uc3Qg
bmYyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJqYS1KUCIpOworY29uc3Qgc3RhcnQgPSA5ODc2
NTQzMjE5ODc2NTQzMjFuOworY29uc3QgZW5kID0gOTg3NjU0MzIxOTg3NjU0MzIybjsKK3Nob3Vs
ZEJlKG5mLmZvcm1hdChzdGFydCksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworc2hvdWxk
QmUobmYyLmZvcm1hdChzdGFydCksIGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMWApOworaWYgKG5m
LmZvcm1hdFJhbmdlKSB7CisgICAgc2hvdWxkQmUobmYuZm9ybWF0UmFuZ2Uoc3RhcnQsIGVuZCks
IGA5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMeKAkzk4Nyw2NTQsMzIxLDk4Nyw2NTQsMzIyYCk7Cisg
ICAgc2hvdWxkQmUobmYyLmZvcm1hdFJhbmdlKHN0YXJ0LCBlbmQpLCBgOTg3LDY1NCwzMjEsOTg3
LDY1NCwzMjHvvZ45ODcsNjU0LDMyMSw5ODcsNjU0LDMyMmApOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXJhbmdlLXYzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXJhbmdlLXYzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIyMjM3YzE3MGYxNmNhMTZjYjIyODkxZWVkNWFhNzVlNjIzODJjNDIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtcmFuZ2UtdjMuanMK
QEAgLTAsMCArMSwyMjMgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVj
dGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAg
bGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9m
IGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5
cGUubmFtZX0gYnV0IGdvdCAke1N0cmluZyhlcnJvcil9IWApOworfQorCitmdW5jdGlvbiBzaG91
bGROb3RUaHJvdyhmdW5jKSB7CisgICAgZnVuYygpOworfQorCitjb25zdCB2YWxpZFJhbmdlcyA9
IFtbLTEyMzQ1LCAtNTY3OF0sIFstMTIzNDUsIDU2Nzg5XSwgWzEyMzQ1LCA1Njc4OV1dOworCitj
b25zdCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7c2lnbkRpc3BsYXk6ICJleGNl
cHRaZXJvIn0pOworaWYgKG5mLmZvcm1hdFJhbmdlKSB7CisgICAgWydmb3JtYXRSYW5nZSddLmZv
ckVhY2goZnVuY3Rpb24obWV0aG9kKSB7CisgICAgICAgIHNob3VsZEJlKCJmdW5jdGlvbiIsIHR5
cGVvZiBuZlttZXRob2RdKTsKKworICAgICAgICAvLyAyLiBQZXJmb3JtID8gUmVxdWlyZUludGVy
bmFsU2xvdChuZiwgW1tJbml0aWFsaXplZE51bWJlckZvcm1hdF1dKS4KKyAgICAgICAgLy8gQXNz
ZXJ0IGlmIGNhbGxlZCB3aXRob3V0IG5mCisgICAgICAgIGxldCBmID0gbmZbbWV0aG9kXTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBmKDEsIDIzKSB9LCBUeXBlRXJyb3IpOworCisgICAg
ICAgIC8vIEFzc2VydCBub3JtYWwgY2FsbCBzdWNjZXNzCisgICAgICAgIHNob3VsZE5vdFRocm93
KCgpID0+IG5mW21ldGhvZF0oMSwgMjMpKTsKKworICAgICAgICAvLyAzLiBJZiBzdGFydCBpcyB1
bmRlZmluZWQgLi4uLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSh1bmRlZmluZWQsIDIzKSB9LCBUeXBlRXJyb3IpOwor
ICAgICAgICAvLyAzLiBJZiAuLi4gZW5kIGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBUeXBlRXJyb3Ig
ZXhjZXB0aW9uLgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMSwgdW5k
ZWZpbmVkKSB9LCBUeXBlRXJyb3IpOworCisgICAgICAgIC8vIDQuIExldCB4IGJlID8gVG9OdW1l
cmljKHN0YXJ0KS4KKyAgICAgICAgLy8gVmVyaWZ5IGl0IHdvbid0IHRocm93IGVycm9yCisgICAg
ICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0obnVsbCwgMjMpKTsKKyAgICAgICAg
c2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXShmYWxzZSwgMjMpKTsKKyAgICAgICAgc2hv
dWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSh0cnVlLCAyMykpOworICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKCIxMiIsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRo
cm93KCgpID0+IG5mW21ldGhvZF0oIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiLCAy
MykpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oU3ltYm9sKDEyKSwg
MjMpIH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhv
ZF0oMTIsIDIzKSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IG5mW21ldGhvZF0oMTJu
LCAyMykpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oe30sIC0yMykg
fSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgpID0+IHsgbmZbbWV0aG9k
XShbXSwgMjMpIH0pOworCisgICAgICAgIC8vIDUuIExldCB5IGJlID8gVG9OdW1lcmljKGVuZCku
CisgICAgICAgIC8vIFZlcmlmeSBpdCB3b24ndCB0aHJvdyBlcnJvcgorICAgICAgICBzaG91bGRO
b3RUaHJvdygoKSA9PiBuZlttZXRob2RdKC0xMiwgbnVsbCkpOworICAgICAgICBzaG91bGROb3RU
aHJvdygoKSA9PiBuZlttZXRob2RdKC0xMiwgZmFsc2UpKTsKKyAgICAgICAgc2hvdWxkTm90VGhy
b3coKCkgPT4gbmZbbWV0aG9kXSgtMTIsIHRydWUpKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3co
KCkgPT4gbmZbbWV0aG9kXSgxMiwgIjIzIikpOworICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBuZlttZXRob2RdKDEyLCAiMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKSk7CisgICAg
ICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgU3ltYm9sKDIzKSkgfSwgVHlw
ZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMp
KTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjNuKSk7Cisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgtMTIsIHt9KSB9LCBSYW5nZUVy
cm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4geyBuZlttZXRob2RdKC0xMiwgW10p
IH0pOworCisgICAgICAgIC8vIDYuIElmIHggaXMgTmFOIC4uLiwgdGhyb3cgYSBSYW5nZUVycm9y
IGV4Y2VwdGlvbi4KKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBuZlttZXRob2RdKE5hTiwg
MjMpIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhv
ZF0oIk5hTiIsIDIzKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAgLy8gNi4gSWYgLi4uIHkgaXMg
TmFOLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiB7IG5mW21ldGhvZF0oMTIsIE5hTikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgxMiwgIk5hTiIpIH0sIFJhbmdlRXJyb3IpOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMTIsICJ4eXoiKSB9LCBSYW5nZUVy
cm9yKTsKKworICAgICAgICAvLyA3LiBJZiB4IGlzIGEgbm9uLWZpbml0ZSBOdW1iZXIgLi4uLCB0
aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9
PiB7IG5mW21ldGhvZF0oLTEyLzAsIDEyLzApIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7IG5mW21ldGhvZF0oMTIvMCwgLTEyLzApIH0sIFJhbmdlRXJyb3IpOworCisgICAgICAgIC8v
IDguIElmIHggaXMgZ3JlYXRlciB0aGFuIHksIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24u
CisgICAgICAgIC8vIG5laXRoZXIgeCBub3IgeSBhcmUgYmlnaW50LgorICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMjMsIDEyKSB9LCBSYW5nZUVycm9yKTsKKyAgICAgICAg
c2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgxMiwgMjMpKTsKKyAgICAgICAgLy8geCBp
cyBub3QgYmlnaW50IGJ1dCB5IGlzLgorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG5mW21l
dGhvZF0oMjMsIDEybikgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCgp
ID0+IG5mW21ldGhvZF0oMTIsIDIzbikpOworICAgICAgICAvLyB4IGlzIGJpZ2ludCBidXQgeSBp
cyBub3QuCisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgbmZbbWV0aG9kXSgyM24sIDEyKSB9
LCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmZbbWV0aG9kXSgx
Mm4sIDIzKSk7CisgICAgICAgIC8vIGJvdGggeCBhbmQgeSBhcmUgYmlnaW50LgorICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7IG5mW21ldGhvZF0oMjNuLCAxMm4pIH0sIFJhbmdlRXJyb3IpOwor
ICAgICAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZlttZXRob2RdKDEybiwgMjNuKSk7CisKKyAg
ICAgICAgdmFsaWRSYW5nZXMuZm9yRWFjaCgKKyAgICAgICAgICAgIGZ1bmN0aW9uKFt4LCB5XSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IFggPSBCaWdJbnQoeCk7CisgICAgICAgICAgICAgICAg
Y29uc3QgWSA9IEJpZ0ludCh5KTsKKyAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRfeF95
ID0gbmZbbWV0aG9kXSh4LCB5KTsKKyAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRfWF95
ID0gbmZbbWV0aG9kXShYLCB5KTsKKyAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRfeF9Z
ID0gbmZbbWV0aG9kXSh4LCBZKTsKKyAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRfWF9Z
ID0gbmZbbWV0aG9kXShYLCBZKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZShmb3JtYXR0ZWRf
eF95LCBmb3JtYXR0ZWRfWF95KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZShmb3JtYXR0ZWRf
eF95LCBmb3JtYXR0ZWRfeF9ZKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZShmb3JtYXR0ZWRf
eF95LCBmb3JtYXR0ZWRfWF9ZKTsKKworICAgICAgICAgICAgfSk7CisgICAgfSk7Cit9CisKKy8v
IENoZWNrIHRoZSBudW1iZXIgb2YgcGFydCB3aXRoIHR5cGU6ICJwbHVzU2lnbiIgYW5kICJtaW51
c1NpZ24iIGFyZSBjb3JyZQoraWYgKG5mLmZvcm1hdFJhbmdlVG9QYXJ0cykgeworICAgIHZhbGlk
UmFuZ2VzLmZvckVhY2goCisgICAgICAgIGZ1bmN0aW9uKFt4LCB5XSkgeworICAgICAgICAgICAg
Y29uc3QgZXhwZWN0ZWRQbHVzID0gKHggPiAwKSA/ICgoeSA+IDApID8gMiA6IDEpIDogKCh5ID4g
MCkgPyAxIDogMCk7CisgICAgICAgICAgICBjb25zdCBleHBlY3RlZE1pbnVzID0gKHggPCAwKSA/
ICgoeSA8IDApID8gMiA6IDEpIDogKCh5IDwgMCkgPyAxIDogMCk7CisgICAgICAgICAgICBsZXQg
YWN0dWFsUGx1cyA9IDA7CisgICAgICAgICAgICBsZXQgYWN0dWFsTWludXMgPSAwOworICAgICAg
ICAgICAgY29uc3QgcGFydHMgPSBuZi5mb3JtYXRSYW5nZVRvUGFydHMoeCwgeSk7CisgICAgICAg
ICAgICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cGFydC50eXBlID09ICJwbHVzU2lnbiIpIGFjdHVhbFBsdXMrKzsKKyAgICAgICAgICAgICAgICBp
ZiAocGFydC50eXBlID09ICJtaW51c1NpZ24iKSBhY3R1YWxNaW51cysrOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBjb25zdCBtZXRob2QgPSAiZm9ybWF0UmFuZ2VUb1BhcnRzKCIgKyB4
ICsgIiwgIiArIHkgKyAiKTogIjsKKyAgICAgICAgICAgIHNob3VsZEJlKGV4cGVjdGVkUGx1cywg
YWN0dWFsUGx1cywKKyAgICAgICAgICAgICAgICBtZXRob2QgKyAiTnVtYmVyIG9mIHR5cGU6ICdw
bHVzU2lnbicgaW4gcGFydHMgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgICAgICBzaG91bGRCZShl
eHBlY3RlZE1pbnVzLCBhY3R1YWxNaW51cywKKyAgICAgICAgICAgICAgICBtZXRob2QgKyAiTnVt
YmVyIG9mIHR5cGU6ICdtaW51c1NpZ24nIGluIHBhcnRzIGlzIGluY29ycmVjdCIpOworICAgICAg
ICB9KTsKK30KKworLy8gRnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pbnRs
LW51bWJlcmZvcm1hdC12MyNmb3JtYXRyYW5nZS1lY21hLTQwMi0zOTMKK2NvbnN0IG5mMiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLCB7CisgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisg
ICAgY3VycmVuY3k6ICJFVVIiLAorICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCwKK30pOwor
CisvLyBSRUFETUUubWQgc2FpZCBpdCBleHBlY3QgIuKCrDPigJM1IgoraWYgKG5mMi5mb3JtYXRS
YW5nZSkKKyAgICBzaG91bGRCZSgi4oKsMyDigJMg4oKsNSIsIG5mMi5mb3JtYXRSYW5nZSgzLCA1
KSk7CisKK2NvbnN0IG5mMyA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLCB7CisgICAg
c3R5bGU6ICJjdXJyZW5jeSIsCisgICAgY3VycmVuY3k6ICJFVVIiLAorICAgIG1heGltdW1GcmFj
dGlvbkRpZ2l0czogMCwKK30pOworaWYgKG5mMy5mb3JtYXRSYW5nZVRvUGFydHMpIHsKKyAgICBj
b25zdCBhY3R1YWwzID0gbmYzLmZvcm1hdFJhbmdlVG9QYXJ0cygzLCA1KTsKKyAgICAvKgorICAg
IFsKKyAgICAgIHt0eXBlOiAiY3VycmVuY3kiLCB2YWx1ZTogIuKCrCIsIHNvdXJjZTogInN0YXJ0
UmFuZ2UifQorICAgICAge3R5cGU6ICJpbnRlZ2VyIiwgdmFsdWU6ICIzIiwgc291cmNlOiAic3Rh
cnRSYW5nZSJ9CisgICAgICB7dHlwZTogImxpdGVyYWwiLCB2YWx1ZTogIuKAkyIsIHNvdXJjZTog
InNoYXJlZCJ9CisgICAgICB7dHlwZTogImludGVnZXIiLCB2YWx1ZTogIjUiLCBzb3VyY2U6ICJl
bmRSYW5nZSJ9CisgICAgXQorICAgICovCisgICAgc2hvdWxkQmUoNSwgYWN0dWFsMy5sZW5ndGgp
OworICAgIHNob3VsZEJlKCJjdXJyZW5jeSIsIGFjdHVhbDNbMF0udHlwZSk7CisgICAgc2hvdWxk
QmUoIuKCrCIsIGFjdHVhbDNbMF0udmFsdWUpOworICAgIHNob3VsZEJlKCJzdGFydFJhbmdlIiwg
YWN0dWFsM1swXS5zb3VyY2UpOworICAgIHNob3VsZEJlKCJpbnRlZ2VyIiwgYWN0dWFsM1sxXS50
eXBlKTsKKyAgICBzaG91bGRCZSgiMyIsIGFjdHVhbDNbMV0udmFsdWUpOworICAgIHNob3VsZEJl
KCJzdGFydFJhbmdlIiwgYWN0dWFsM1sxXS5zb3VyY2UpOworICAgIHNob3VsZEJlKCJsaXRlcmFs
IiwgYWN0dWFsM1syXS50eXBlKTsKKyAgICBzaG91bGRCZSgiIOKAkyAiLCBhY3R1YWwzWzJdLnZh
bHVlKTsKKyAgICBzaG91bGRCZSgic2hhcmVkIiwgYWN0dWFsM1syXS5zb3VyY2UpOworICAgIHNo
b3VsZEJlKCJjdXJyZW5jeSIsIGFjdHVhbDNbM10udHlwZSk7CisgICAgc2hvdWxkQmUoIuKCrCIs
IGFjdHVhbDNbM10udmFsdWUpOworICAgIHNob3VsZEJlKCJlbmRSYW5nZSIsIGFjdHVhbDNbM10u
c291cmNlKTsKKyAgICBzaG91bGRCZSgiaW50ZWdlciIsIGFjdHVhbDNbNF0udHlwZSk7CisgICAg
c2hvdWxkQmUoIjUiLCBhY3R1YWwzWzRdLnZhbHVlKTsKKyAgICBzaG91bGRCZSgiZW5kUmFuZ2Ui
LCBhY3R1YWwzWzRdLnNvdXJjZSk7Cit9CisKK2NvbnN0IG5mNCA9IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgiZW4tVVMiLCB7CisgICAgc3R5bGU6ICJjdXJyZW5jeSIsCisgICAgY3VycmVuY3k6ICJF
VVIiLAorICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCwKK30pOworaWYgKG5mNC5mb3JtYXRS
YW5nZSkKKyAgICBzaG91bGRCZSgifuKCrDMiLCBuZjQuZm9ybWF0UmFuZ2UoMi45LCAzLjEpKTsK
KworY29uc3QgbmY1ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJlbi1VUyIsIHsKKyAgICBzdHls
ZTogImN1cnJlbmN5IiwKKyAgICBjdXJyZW5jeTogIkVVUiIsCisgICAgc2lnbkRpc3BsYXk6ICJh
bHdheXMiLAorfSk7CitpZiAobmY1LmZvcm1hdFJhbmdlKQorICAgIHNob3VsZEJlKCJ+K+KCrDMu
MDAiLCBuZjUuZm9ybWF0UmFuZ2UoMi45OTksIDMuMDAxKSk7CisKK2NvbnN0IG5mNiA9IG5ldyBJ
bnRsLk51bWJlckZvcm1hdCgiZW4iKTsKK2lmIChuZjYuZm9ybWF0UmFuZ2UpIHsKKyAgICBzaG91
bGRCZSgiM+KAk+KIniIsIG5mNi5mb3JtYXRSYW5nZSgzLCAxLzApKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7IG5mNi5mb3JtYXRSYW5nZSgzLCAwLzApOyB9LCBSYW5nZUVycm9yKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmct
djMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtc3RyaW5nLXYz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk1ZDViZjAxYTExZmJjNzc2Y2M5OGZiNDc5NDJjZDg3ZTZmMmY2ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1mb3Jt
YXQtc3RyaW5nLXYzLmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCArICIgIiArIGV4cGVjdGVkKTsKK30KKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoImVuLVVTIik7Citjb25zdCBuZjIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImphLUpQIik7
Citjb25zdCBzdHJpbmcgPSAiOTg3NjU0MzIxOTg3NjU0MzIxIjsKK2NvbnN0IHN0cmluZzIgPSAi
OTg3NjU0MzIxOTg3NjU0MzIyIjsKK3Nob3VsZEJlKG5mLmZvcm1hdChzdHJpbmcpLCBgOTg3LDY1
NCwzMjEsOTg3LDY1NCwzMjFgKTsKK3Nob3VsZEJlKG5mMi5mb3JtYXQoc3RyaW5nKSwgYDk4Nyw2
NTQsMzIxLDk4Nyw2NTQsMzIxYCk7CitpZiAobmYuZm9ybWF0UmFuZ2UpIHsKKyAgICBzaG91bGRC
ZShuZi5mb3JtYXRSYW5nZShzdHJpbmcsIHN0cmluZzIpLCBgOTg3LDY1NCwzMjEsOTg3LDY1NCwz
MjHigJM5ODcsNjU0LDMyMSw5ODcsNjU0LDMyMmApOworICAgIHNob3VsZEJlKG5mMi5mb3JtYXRS
YW5nZShzdHJpbmcsIHN0cmluZzIpLCBgOTg3LDY1NCwzMjEsOTg3LDY1NCwzMjHvvZ45ODcsNjU0
LDMyMSw5ODcsNjU0LDMyMmApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtZm9ybWF0LXN0cmluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LWZvcm1hdC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjYmRkMTg4ODExMDA2ODY0YjQ1
OTE5ZmIyOTQ2MDgxYjY3MGI0NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LWZvcm1hdC1zdHJpbmcuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIg
IiArIGV4cGVjdGVkKTsKK30KKworY29uc3QgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVu
LVVTIik7Citjb25zdCBuZjIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImphLUpQIik7CitzaG91
bGRCZShuZi5mb3JtYXQoIjU0LjMyMSIpLCBgNTQuMzIxYCk7CitpZiAobmYuZm9ybWF0UmFuZ2Up
IHsKKyAgICBzaG91bGRCZShuZi5mb3JtYXRSYW5nZSgiLTU0LjMyMSIsICIrNTQuMzIxIiksIGAt
NTQuMzIxIOKAkyA1NC4zMjFgKTsKKyAgICBzaG91bGRCZShuZi5mb3JtYXRSYW5nZSgiLTU0LjMy
MSIsICIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLCBgLTU0LjMy
MSDigJMgMjAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAs
MDAwYCk7CisgICAgc2hvdWxkQmUobmYuZm9ybWF0UmFuZ2UoIi0wIiwgIjAiKSwgYC0wIOKAkyAw
YCk7CisgICAgc2hvdWxkQmUobmYuZm9ybWF0UmFuZ2UoIi0wIiwgIjEwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSwgYC0wIOKAkyAxLDAwMCwwMDAsMDAwLDAw
MCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwYCk7CisgICAgc2hv
dWxkQmUobmYyLmZvcm1hdFJhbmdlKCItNTQuMzIxIiwgIis1NC4zMjEiKSwgYC01NC4zMjEg772e
IDU0LjMyMWApOworICAgIHNob3VsZEJlKG5mMi5mb3JtYXRSYW5nZSgiLTU0LjMyMSIsICIyMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLCBgLTU0LjMyMSDvvZ4gMjAs
MDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwYCk7Cisg
ICAgc2hvdWxkQmUobmYyLmZvcm1hdFJhbmdlKCItMCIsICIwIiksIGAtMCDvvZ4gMGApOworICAg
IHNob3VsZEJlKG5mMi5mb3JtYXRSYW5nZSgiLTAiLCAiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLCBgLTAg772eIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCww
MDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDBgKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcwppbmRleCBl
ZjcxZjBmMWM2YzU0MWRmYTliYzM0NDFhYTFiM2Y0MDdjZDVlODAzLi5jY2Y5N2VjMjQxNTZkZDJk
NGQyYzlhMDVmMjQ0YmM1YmQ4NjM2NDUwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRs
LW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzCkBAIC01NywzICs1NywzNSBAQCBmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiBzaG91bGRCZShJbnRsLk51bWJlckZv
cm1hdCgnZW4tVVMnLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXRUb1BhcnRzKE51bWJl
ci5NQVhfVkFMVUUpLmxlbmd0aCwgMSk7CiBzaG91bGRCZShJbnRsLk51bWJlckZvcm1hdCgnZW4t
VVMnLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXRUb1BhcnRzKE51bWJlci5NQVhfVkFM
VUUpWzBdLnZhbHVlLmxlbmd0aCwgMzA5KTsKIHNob3VsZEJlKEludGwuTnVtYmVyRm9ybWF0KCdl
bi1VUycpLmZvcm1hdFRvUGFydHMoTnVtYmVyLk1BWF9WQUxVRSkubGVuZ3RoLCAyMDUpOworCitz
aG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeSgKKyAgICAgICAgSW50bC5OdW1iZXJGb3JtYXQo
J2VuLVVTJykuZm9ybWF0VG9QYXJ0cyg0MDAwbikKKyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5
KFsKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiNCJ9LAorICAgICAgICB7InR5
cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9LAorICAgICAgICB7InR5cGUiOiJpbnRlZ2VyIiwidmFs
dWUiOiIwMDAifQorICAgIF0pKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoCisg
ICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFydHMoLTQwMDBuKQor
ICAgICksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7InR5cGUiOiJtaW51c1NpZ24i
LCJ2YWx1ZSI6Ii0ifSwKKyAgICAgICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiNCJ9LAor
ICAgICAgICB7InR5cGUiOiJncm91cCIsInZhbHVlIjoiLCJ9LAorICAgICAgICB7InR5cGUiOiJp
bnRlZ2VyIiwidmFsdWUiOiIwMDAifQorICAgIF0pKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5z
dHJpbmdpZnkoCisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycpLmZvcm1hdFRvUGFy
dHMoIi00MDAwIikKKyAgICApLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyJ0eXBl
IjoibWludXNTaWduIiwidmFsdWUiOiItIn0sCisgICAgICAgIHsidHlwZSI6ImludGVnZXIiLCJ2
YWx1ZSI6IjQifSwKKyAgICAgICAgeyJ0eXBlIjoiZ3JvdXAiLCJ2YWx1ZSI6IiwifSwKKyAgICAg
ICAgeyJ0eXBlIjoiaW50ZWdlciIsInZhbHVlIjoiMDAwIn0KKyAgICBdKSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtcmVz
b2x2ZWQtbWF0Y2gtdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3Vu
ZGluZy1pbmNyZW1lbnQtcmVzb2x2ZWQtbWF0Y2gtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIxZTY1NGVm
OTg3NTZjOGQxZDc2MWJhMjA5NTM2MDM3NDRhYzBjYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC1yZXNvbHZlZC1t
YXRjaC12My5qcwpAQCAtMCwwICsxLDQxIEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAi
ICIgKyBleHBlY3RlZCk7Cit9CisKK2xldCB2YWxpZFJvdW5kaW5nSW5jcmVtZW50cyA9IFsKKyAg
ICAxLCA1LCAxMCwgMjAsIDI1LCA1MCwgMTAwLCAyMDAsIDI1MCwgNTAwLCAxMDAwLCAyMDAwLCAy
NTAwLCA1MDAwCitdOworCit2YWxpZFJvdW5kaW5nSW5jcmVtZW50cy5mb3JFYWNoKGZ1bmN0aW9u
KHJvdW5kaW5nSW5jcmVtZW50KSB7CisgICAgbGV0IG5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0
KHVuZGVmaW5lZCwge3JvdW5kaW5nSW5jcmVtZW50fSk7CisgICAgc2hvdWxkQmUocm91bmRpbmdJ
bmNyZW1lbnQsIG5mLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nSW5jcmVtZW50KTsKK30pOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5j
cmVtZW50LXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmct
aW5jcmVtZW50LXYzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMmE5MzFhYzE0MTUyMmE4MjZmMDlhYzkwYThi
Y2ZkMGY0ZTgyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC1yb3VuZGluZy1pbmNyZW1lbnQtdjMuanMKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29w
eXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAg
ICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsK
KyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3Rh
bmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vy
cm9yVHlwZS5uYW1lfSFgKTsKK30KKworCitsZXQgdmFsaWRSb3VuZGluZ0luY3JlbWVudHMgPSBb
CisgICAgMSwgMiwgNSwgMTAsIDIwLCA1MCwgMTAwLCA1MDAsIDEwMDAsIDUwMDAKK107CisKK2xl
dCBpbnZhbGlkUm91bmRpbmdJbmNyZW1lbnRzID0gWworICAgIC0xLCAtNSwgMCwgMTAwMSwgMTEw
MCwgNTUwMCwgMjAwMDAwLCA1MDAwMDUsIDEwMDAwMDAwLCAxMDAwMCwgNTAwMDAsIDEwMDAwMCwg
NTAwMDAwLCAxMDAwMDAwLAorICAgIDUwMDAwMDAKK107CisKK3ZhbGlkUm91bmRpbmdJbmNyZW1l
bnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQpIHsKKyAgICBuZXcgSW50bC5O
dW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdJbmNyZW1lbnR9KTsKK30pOworCitpbnZh
bGlkUm91bmRpbmdJbmNyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24ocm91bmRpbmdJbmNyZW1lbnQp
IHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBJbnRsLk51bWJlckZvcm1h
dCh1bmRlZmluZWQsIHtyb3VuZGluZ0luY3JlbWVudH0pCisgICAgfSwgUmFuZ2VFcnJvcik7Cit9
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5n
LWluY3JlbWVudC12YWx1ZS1oYW5pZGVjLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJm
b3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLWhhbmlkZWMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBh
ZWU1YjY0NDUyYjViOTgzOWU0YjRjYzgyYjMxNWE2ZmVmOGE1ZAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1
ZS1oYW5pZGVjLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8vIENvcHlyaWdodCAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
ICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgcGVubnkgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoImphLUpQIiwgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJywgbWluaW11bUZyYWN0aW9u
RGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50OiAx
IH0pOworbGV0IG5pY2tlbCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiamEtSlAiLCB7IG51bWJl
cmluZ1N5c3RlbTogJ2hhbmlkZWMnLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1G
cmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDUgfSk7CitsZXQgZGltZSA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCgiamEtSlAiLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hhbmlkZWMn
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91
bmRpbmdJbmNyZW1lbnQ6IDEwIH0pOworCitzaG91bGRCZSgi5LiA44CHLuS4gOS6lCIsIHBlbm55
LmZvcm1hdCgxMC4xNTQpKTsKK3Nob3VsZEJlKCLkuIDjgIcu5LiA5YWtIiwgcGVubnkuZm9ybWF0
KDEwLjE1NSkpOworc2hvdWxkQmUoIuS4gOOAhy7kuIDjgIciLCBuaWNrZWwuZm9ybWF0KDEwLjEy
NCkpOworc2hvdWxkQmUoIuS4gOOAhy7kuIDkupQiLCBuaWNrZWwuZm9ybWF0KDEwLjEyNSkpOwor
c2hvdWxkQmUoIuS4gOOAhy7lm5vjgIciLCBkaW1lLmZvcm1hdCgxMC40NDQpKTsKK3Nob3VsZEJl
KCLkuIDjgIcu5Zub44CHIiwgZGltZS5mb3JtYXQoMTAuNDQ1KSk7CitzaG91bGRCZSgi5LiA44CH
LuWbm+OAhyIsIGRpbWUuZm9ybWF0KDEwLjQ0NSkpOworc2hvdWxkQmUoIuS4gOOAhy7kupTjgIci
LCBkaW1lLmZvcm1hdCgxMC40NSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1u
dW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVtZW50LXZhbHVlLXYzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUwZjI2OGQ5ODZjMTZlM2Y0OTdhZjM4NDU4ZmVlZDg5MDlkMjY0MzYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1pbmNy
ZW1lbnQtdmFsdWUtdjMuanMKQEAgLTAsMCArMSw0OSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQpOworfQorCitsZXQgcGVubnkgPSBuZXcgSW50bC5O
dW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGlt
dW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNyZW1lbnQ6IDEgfSk7CitsZXQgbmlja2Vs
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KAorICAgICJlbiIsIHsgbWluaW11bUZyYWN0aW9uRGln
aXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIHJvdW5kaW5nSW5jcmVtZW50OiA1IH0p
OworbGV0IGRpbWUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoCisgICAgImVuIiwgeyBtaW5pbXVt
RnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgcm91bmRpbmdJbmNy
ZW1lbnQ6IDEwIH0pOworCisvLyBodHRwczovL25lY3MuY29tL2tub3dsZWRnZWJhc2Uvc3lzcHJl
ZnNfcHJjX21vZF9yb3VuZG1ldGguaHRtCitzaG91bGRCZSgiMTAuMTUiLCBwZW5ueS5mb3JtYXQo
MTAuMTU0KSk7CitzaG91bGRCZSgiMTAuMTYiLCBwZW5ueS5mb3JtYXQoMTAuMTU1KSk7CitzaG91
bGRCZSgiMTAuMTAiLCBuaWNrZWwuZm9ybWF0KDEwLjEyNCkpOworc2hvdWxkQmUoIjEwLjE1Iiwg
bmlja2VsLmZvcm1hdCgxMC4xMjUpKTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0KDEw
LjQ0NCkpOworLy8gbWlzdGFrZSBpbiB0aGUgYWJvdmUgcGFnZSwgdGhlIHJlc3VsdCBzaG91bGQg
YmUgMTAuNDAgbm90IDEwLjUwCitzaG91bGRCZSgiMTAuNDAiLCBkaW1lLmZvcm1hdCgxMC40NDUp
KTsKK3Nob3VsZEJlKCIxMC40MCIsIGRpbWUuZm9ybWF0KDEwLjQ0NSkpOworc2hvdWxkQmUoIjEw
LjUwIiwgZGltZS5mb3JtYXQoMTAuNDUpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXJvdW5kaW5nLWluY3JlbWVudC12YWx1ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MDRiMWE2ZjRhM2M2MTc1ODcwZDJmNzQ4YTIzMTJkODZmMDJiNDBmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctaW5jcmVt
ZW50LXZhbHVlLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KK3No
b3VsZEJlKG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0
czogMywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzLCByb3VuZGluZ0luY3JlbWVudDogMTAgfSku
Zm9ybWF0KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUsNTU1LDU1NS41NjBgKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czog
MiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLCByb3VuZGluZ0luY3JlbWVudDogMTAwIH0pLmZv
cm1hdCg1NTU1NTU1NTU1NS41NTU1NTUpLCBgNTUsNTU1LDU1NSw1NTYuMDBgKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0LCByb3VuZGluZ0luY3JlbWVudDogMTAwMCB9KS5mb3Jt
YXQoNTU1NTU1NTU1NTUuNTU1NTU1KSwgYDU1LDU1NSw1NTUsNTU1LjYwMDBgKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLCByb3VuZGluZ0luY3JlbWVudDogMTAwMCB9KS5mb3Jt
YXQoNTU1NTU1NTU1NTUuNTU1NTU1KSwgYDU1LDU1NSw1NTUsNTYwLjAwYCk7CitzaG91bGRCZShu
ZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDEsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0czogMSwgcm91bmRpbmdJbmNyZW1lbnQ6IDEwMDAgfSkuZm9ybWF0
KDU1NTU1NTU1NTU1LjU1NTU1NSksIGA1NSw1NTUsNTU1LDYwMC4wYCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXRhYmxlLXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS10YWJsZS12
My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZGNmOWEzMDNmNDU1NWExYzJmZTlmM2UwNmQyYzJmOGYxZDcyOTg5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91
bmRpbmctbW9kZS10YWJsZS12My5qcwpAQCAtMCwwICsxLDYxIEBACisvLyBDb3B5cmlnaHQgMjAy
MSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCArICIgIiArIG1lc3NhZ2Up
OworfQorCisvLyBDaGVjayB0aGUgcm91bmRpbmcgYmVoYXZpb3IuCisvLyBCYXNlZCBvbiBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L251bWJlcmZvcm1h
dC9kaWZmLmh0bWwjdGFibGUtaW50bC1yb3VuZGluZy1tb2RlcworbGV0IGlucHV0cyA9IFstMS41
LCAwLjQsIDAuNSwgMC42LCAxLjVdOworbGV0IGV4cGVjdGF0aW9ucyA9IHsKKyAgICAiY2VpbCI6
ICAgICAgIFsiLTEiLCAiMSIsICIxIiwgIjEiLCAiMiJdLAorICAgICJmbG9vciI6ICAgICAgWyIt
MiIsICIwIiwgIjAiLCAiMCIsICIxIl0sCisgICAgImV4cGFuZCI6ICAgICBbIi0yIiwgIjEiLCAi
MSIsICIxIiwgIjIiXSwKKyAgICAidHJ1bmMiOiAgICAgIFsiLTEiLCAiMCIsICIwIiwgIjAiLCAi
MSJdLAorICAgICJoYWxmQ2VpbCI6ICAgWyItMSIsICIwIiwgIjEiLCAiMSIsICIyIl0sCisgICAg
ImhhbGZGbG9vciI6ICBbIi0yIiwgIjAiLCAiMCIsICIxIiwgIjEiXSwKKyAgICAiaGFsZkV4cGFu
ZCI6IFsiLTIiLCAiMCIsICIxIiwgIjEiLCAiMiJdLAorICAgICJoYWxmVHJ1bmMiOiAgWyItMSIs
ICIwIiwgIjAiLCAiMSIsICIxIl0sCisgICAgImhhbGZFdmVuIjogICBbIi0yIiwgIjAiLCAiMCIs
ICIxIiwgIjIiXSwKK307CitPYmplY3Qua2V5cyhleHBlY3RhdGlvbnMpLmZvckVhY2goZnVuY3Rp
b24ocm91bmRpbmdNb2RlKSB7CisgICAgbGV0IGV4cCA9IGV4cGVjdGF0aW9uc1tyb3VuZGluZ01v
ZGVdOworICAgIGxldCBpZHggPSAwOworICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1h
dCgiZW4iLCB7cm91bmRpbmdNb2RlLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDB9KTsKKyAgICBz
aG91bGRCZShyb3VuZGluZ01vZGUsIG5mLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSk7
CisgICAgaW5wdXRzLmZvckVhY2goZnVuY3Rpb24oaW5wdXQpIHsKKyAgICAgICAgbGV0IG1zZyA9
ICJpbnB1dDogIiArIGlucHV0ICsgIiB3aXRoIHJvdW5kaW5nTW9kZTogIiArIHJvdW5kaW5nTW9k
ZTsKKyAgICAgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjkpCisgICAgICAgICAgICBzaG91
bGRCZShleHBbaWR4KytdLCBuZi5mb3JtYXQoaW5wdXQpLCBtc2cpOworICAgICAgICBlbHNlIGlm
IChyb3VuZGluZ01vZGUgIT09ICJoYWxmQ2VpbCIgJiYgcm91bmRpbmdNb2RlICE9PSAiaGFsZkZs
b29yIikKKyAgICAgICAgICAgIHNob3VsZEJlKGV4cFtpZHgrK10sIG5mLmZvcm1hdChpbnB1dCks
IG1zZyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5mLmZvcm1hdChpbnB1dCkgLy8gc2hv
dWxkIG5vdCB0aHJvdy4KKyAgICB9KQorfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9p
bnRsLW51bWJlcmZvcm1hdC1yb3VuZGluZy1tb2RlLXYzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTE3YTZiOTM2
MzcwMjM2YWZiYzdlZmNiOTE5MTdkNTk5MDMwYzRiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtcm91bmRpbmctbW9kZS12My5qcwpAQCAtMCwwICsx
LDEwMSBAQAorLy8gQ29weXJpZ2h0IDIwMjEgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
Ly8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsICsgIiAiICsgZXhwZWN0ZWQp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitsZXQgdmFsaWRSb3VuZGluZ01vZGUgPSBb
CisgICAgImNlaWwiLAorICAgICJmbG9vciIsCisgICAgImV4cGFuZCIsCisgICAgImhhbGZDZWls
IiwKKyAgICAiaGFsZkV4cGFuZCIsCisgICAgImhhbGZGbG9vciIsCisgICAgImhhbGZUcnVuYyIs
CisgICAgImhhbGZFdmVuIiwKKyAgICAidHJ1bmMiLAorXTsKKworbGV0IGludmFsaWRSb3VuZGlu
Z01vZGUgPSBbCisgICAgImNlaWxpbmciLAorICAgICJkb3duIiwKKyAgICAiRG93biIsCisgICAg
ImZsb29yaW5nIiwKKyAgICAiaGFsZkRvd24iLAorICAgICJoYWxmVXAiLAorICAgICJoYWxmdXAi
LAorICAgICJoYWxmZXZlbiIsCisgICAgImhhbGZkb3duIiwKKyAgICAiaGFsZi11cCIsCisgICAg
ImhhbGYtZXZlbiIsCisgICAgImhhbGYtZG93biIsCisgICAgInVwIiwKKyAgICAiVXAiLAorXTsK
KwordmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaChmdW5jdGlvbihyb3VuZGluZ01vZGUpIHsKKyAg
ICBsZXQgbmYgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7cm91bmRpbmdNb2Rl
fSk7CisgICAgc2hvdWxkQmUocm91bmRpbmdNb2RlLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5yb3Vu
ZGluZ01vZGUpOworfSk7CisKK2ludmFsaWRSb3VuZGluZ01vZGUuZm9yRWFjaChmdW5jdGlvbihy
b3VuZGluZ01vZGUpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBuZiA9
IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtyb3VuZGluZ01vZGV9KTsgfSwgYFJh
bmdlRXJyb3I6IHJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciAiY2VpbCIsICJmbG9vciIsICJl
eHBhbmQiLCAidHJ1bmMiLCAiaGFsZkNlaWwiLCAiaGFsZkZsb29yIiwgImhhbGZFeHBhbmQiLCAi
aGFsZlRydW5jIiwgb3IgImhhbGZFdmVuImApOworfSk7CisKKy8vIENoZWNrIGRlZmF1bHQgaXMg
ImhhbGZFeHBhbmQiCitzaG91bGRCZSgiaGFsZkV4cGFuZCIsIChuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5yb3VuZGluZ01vZGUpKTsKK3Nob3VsZEJlKCJoYWxmRXhw
YW5kIiwgKG5ldyBJbnRsLk51bWJlckZvcm1hdCgKKyAgICB1bmRlZmluZWQsIHtyb3VuZGluZ01v
ZGU6IHVuZGVmaW5lZH0pLnJlc29sdmVkT3B0aW9ucygpLnJvdW5kaW5nTW9kZSkpOworCisvLyBD
aGVjayByb3VuZGluZ01vZGUgaXMgcmVhZCBvbmNlIGFmdGVyIHJlYWRpbmcgc2lnbkRpc3BsYXkK
KworbGV0IHJlYWQgPSBbXTsKK2xldCBvcHRpb25zID0geworICAgIGdldCBzaWduRGlzcGxheSgp
IHsgcmVhZC5wdXNoKCdzaWduRGlzcGxheScpOyByZXR1cm4gdW5kZWZpbmVkOyB9LAorICAgIGdl
dCByb3VuZGluZ01vZGUoKSB7IHJlYWQucHVzaCgncm91bmRpbmdNb2RlJyk7IHJldHVybiB1bmRl
ZmluZWQ7IH0sCit9OworCituZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCBvcHRpb25z
KTsKK3Nob3VsZEJlKCJzaWduRGlzcGxheSxyb3VuZGluZ01vZGUiLCByZWFkLmpvaW4oIiwiKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1zaWduLWRpc3Bs
YXktdjMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC1zaWduLWRpc3BsYXkt
djMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWUxYzg1MTNhYjhhNTY3MjA4ZjA4MTgzNTBlZTlkZGMzZjY4NjM1
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXNp
Z24tZGlzcGxheS12My5qcwpAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQgMjAyMSB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwgKyAiICIgKyBleHBlY3RlZCk7Cit9CisKKy8vIFRlc3QgZGVmYXVsdC4KK2xldCBu
ZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpOworc2hvdWxkQmUoImF1dG8iLCBuZi5yZXNvbHZl
ZE9wdGlvbnMoKS5zaWduRGlzcGxheSk7CisKK25mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJl
biIpOworc2hvdWxkQmUoImF1dG8iLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS5zaWduRGlzcGxheSk7
CisKK2NvbnN0IHRlc3REYXRhID0gWworICAgIFsiYXV0byIsICAgICAgICAiLTEyMyIsICAiLTAi
LCAgIjAiLCAgIjEyMyJdLAorICAgIFsiYWx3YXlzIiwgICAgICAiLTEyMyIsICAiLTAiLCAiKzAi
LCAiKzEyMyJdLAorICAgIFsibmV2ZXIiLCAgICAgICAiMTIzIiwgICAiMCIsICAiMCIsICAiMTIz
Il0sCisgICAgWyJleGNlcHRaZXJvIiwgICItMTIzIiwgICIwIiwgICIwIiwgICIrMTIzIl0sCisg
ICAgWyJuZWdhdGl2ZSIsICAgICItMTIzIiwgICIwIiwgICIwIiwgICIxMjMiXSwKK107CisKK2Zv
ciAoY29uc3QgW3NpZ25EaXNwbGF5LCBuZWcsIG5lZ1plcm8sIHplcm8sIHBvc10gb2YgdGVzdERh
dGEpIHsKKyAgICBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLCB7c2lnbkRpc3BsYXl9
KTsKKyAgICBzaG91bGRCZShzaWduRGlzcGxheSwgbmYucmVzb2x2ZWRPcHRpb25zKCkuc2lnbkRp
c3BsYXkpOworICAgIHNob3VsZEJlKG5lZywgbmYuZm9ybWF0KC0xMjMpKTsKKyAgICBpZiAoJHZt
LmljdVZlcnNpb24oKSA+PSA2OSkKKyAgICAgICAgc2hvdWxkQmUobmVnWmVybywgbmYuZm9ybWF0
KC0wKSk7CisgICAgc2hvdWxkQmUoemVybywgbmYuZm9ybWF0KDApKTsKKyAgICBzaG91bGRCZShw
b3MsIG5mLmZvcm1hdCgxMjMpKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmctemVyby1kaXNwbGF5
LXJlc29sdmVkLW9wdGlvbnMtdjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQxMzU1MTM2YTM5MjQ1ZTY5NzNi
MTY0MjJhYmUyMGYwM2NiNmE2YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS1yZXNvbHZlZC1vcHRpb25zLXYz
LmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCArICIg
IiArIGV4cGVjdGVkKTsKK30KKworbGV0IGRlZmF1bHRGbXQgPSBuZXcgSW50bC5OdW1iZXJGb3Jt
YXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9u
RGlnaXRzOiAyIH0pOworbGV0IGF1dG9GbXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuIiwK
KyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAy
LAorICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnYXV0byd9KTsKK2xldCBzdHJpcElmSW50
ZWdlckZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAgIHsgbWluaW11bUZyYWN0
aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisgICAgICAgIHRyYWlsaW5n
WmVyb0Rpc3BsYXk6ICdzdHJpcElmSW50ZWdlcid9KTsKKworc2hvdWxkQmUoImF1dG8iLCBkZWZh
dWx0Rm10LnJlc29sdmVkT3B0aW9ucygpLnRyYWlsaW5nWmVyb0Rpc3BsYXkpOworc2hvdWxkQmUo
ImF1dG8iLCBhdXRvRm10LnJlc29sdmVkT3B0aW9ucygpLnRyYWlsaW5nWmVyb0Rpc3BsYXkpOwor
c2hvdWxkQmUoInN0cmlwSWZJbnRlZ2VyIiwKKyAgICBzdHJpcElmSW50ZWdlckZtdC5yZXNvbHZl
ZE9wdGlvbnMoKS50cmFpbGluZ1plcm9EaXNwbGF5KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS12My5qcyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXRyYWlsaW5nLXplcm8tZGlzcGxheS12My5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NWYyYjFkMWNhMmM4NzdlZThhY2JlODFkNTkwMjU4ODE2Yzk2YjAwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdHJhaWxpbmct
emVyby1kaXNwbGF5LXYzLmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDIxIHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCArICIgIiArIGV4cGVjdGVkKTsKK30KKworbGV0IGRlZmF1bHRGbXQgPSBuZXcg
SW50bC5OdW1iZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwg
bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pOworbGV0IGF1dG9GbXQgPSBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQoImVuIiwKKyAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZy
YWN0aW9uRGlnaXRzOiAyLAorICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAnYXV0byd9KTsK
K2xldCBzdHJpcElmSW50ZWdlckZtdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4iLAorICAg
IHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsCisg
ICAgICAgIHRyYWlsaW5nWmVyb0Rpc3BsYXk6ICdzdHJpcElmSW50ZWdlcid9KTsKKworc2hvdWxk
QmUoIjMuMTQiLCBkZWZhdWx0Rm10LmZvcm1hdCgzLjE0MTEpKTsKK3Nob3VsZEJlKCIzLjE0Iiwg
YXV0b0ZtdC5mb3JtYXQoMy4xNDExKSk7CitzaG91bGRCZSgiMy4xNCIsIHN0cmlwSWZJbnRlZ2Vy
Rm10LmZvcm1hdCgzLjE0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgZGVmYXVsdEZtdC5mb3JtYXQo
My4wMDE0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgYXV0b0ZtdC5mb3JtYXQoMy4wMDE0MTEpKTsK
K2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY5KQorICAgIHNob3VsZEJlKCIzIiwgc3RyaXBJZklu
dGVnZXJGbXQuZm9ybWF0KDMuMDAxNDExKSk7CitlbHNlCisgICAgc2hvdWxkQmUoIjMuMDAiLCBz
dHJpcElmSW50ZWdlckZtdC5mb3JtYXQoMy4wMDE0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgZGVm
YXVsdEZtdC5mb3JtYXQoMi45OTk0MTEpKTsKK3Nob3VsZEJlKCIzLjAwIiwgYXV0b0ZtdC5mb3Jt
YXQoMi45OTk0MTEpKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY5KQorICAgIHNob3VsZEJl
KCIzIiwgc3RyaXBJZkludGVnZXJGbXQuZm9ybWF0KDIuOTk5NDExKSk7CitlbHNlCisgICAgc2hv
dWxkQmUoIjMuMDAiLCBzdHJpcElmSW50ZWdlckZtdC5mb3JtYXQoMi45OTk0MTEpKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5nLXYzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQtdXNlZ3JvdXBpbmctdjMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzhjN2ZhYzg5NjBlYjk2MmUzYjZkOWYzMzQ4YjNhYmYwZjZjMDhlYgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LXVzZWdyb3VwaW5n
LXYzLmpzCkBAIC0wLDAgKzEsMTU1IEBACisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjggcHJvamVj
dCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitsZXQgdmFsaWRVc2VHcm91cGluZyA9IFsK
KyAgICAibWluMiIsCisgICAgImF1dG8iLAorICAgICJhbHdheXMiLAorICAgIGZhbHNlLAorXTsK
KworbGV0IGludmFsaWRVc2VHcm91cGluZyA9IFsKKyAgICAibWluLTIiLAorICAgICJ0cnVlIiwK
K107CisKK3ZhbGlkVXNlR3JvdXBpbmcuZm9yRWFjaChmdW5jdGlvbih1c2VHcm91cGluZykgewor
ICAgIGxldCBuZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGlu
Z30pOworICAgIHNob3VsZEJlKHVzZUdyb3VwaW5nLCBuZi5yZXNvbHZlZE9wdGlvbnMoKS51c2VH
cm91cGluZyk7Cit9KTsKKworaW52YWxpZFVzZUdyb3VwaW5nLmZvckVhY2goZnVuY3Rpb24odXNl
R3JvdXBpbmcpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBuZiA9IG5l
dyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZ30pOyB9LCBgUmFuZ2VF
cnJvcjogdXNlR3JvdXBpbmcgbXVzdCBiZSBlaXRoZXIgdHJ1ZSwgZmFsc2UsICJtaW4yIiwgImF1
dG8iLCBvciAiYWx3YXlzImApOworfSk7CisKKy8vIHVzZUdyb3VwaW5nOiB1bmRlZmluZWQgZ2V0
ICJhdXRvIgorc2hvdWxkQmUoImF1dG8iLAorICAgIChuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSku
cmVzb2x2ZWRPcHRpb25zKCkudXNlR3JvdXBpbmcpOworc2hvdWxkQmUoImF1dG8iLAorICAgIChu
ZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IHVuZGVmaW5lZH0p
KQorICAgIC5yZXNvbHZlZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CisKKy8vIHVzZUdyb3VwaW5n
OiB0cnVlIGdldCAiYWx3YXlzIgorc2hvdWxkQmUoImFsd2F5cyIsCisgICAgKG5ldyBJbnRsLk51
bWJlckZvcm1hdCh1bmRlZmluZWQsIHt1c2VHcm91cGluZzogdHJ1ZX0pKQorICAgIC5yZXNvbHZl
ZE9wdGlvbnMoKS51c2VHcm91cGluZyk7CisKKy8vIHVzZUdyb3VwaW5nOiBmYWxzZSBnZXQgZmFs
c2UKKy8vIHVzZUdyb3VwaW5nOiAiIiBnZXQgZmFsc2UKK3Nob3VsZEJlKGZhbHNlLAorICAgIChu
ZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6IGZhbHNlfSkpCisg
ICAgLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKK3Nob3VsZEJlKGZhbHNlLAorICAg
IChuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7dXNlR3JvdXBpbmc6ICIifSkpCisg
ICAgLnJlc29sdmVkT3B0aW9ucygpLnVzZUdyb3VwaW5nKTsKKworLy8gU29tZSBsb2NhbGVzIHdp
dGggZGVmYXVsdCBtaW5pbXVtR3JvdXBpbmdEaWdpdHMKK2xldCBtZ2QxID0gWyJlbiJdOworLy8g
U29tZSBsb2NhbGVzIHdpdGggZGVmYXVsdCBtaW5pbXVtR3JvdXBpbmdEaWdpdHN7IjIifQorbGV0
IG1nZDIgPSBbImVzIiwgInBsIiwgImx2IiwgImV0IiwgImJnIl07CitsZXQgYWxsID0gbWdkMS5j
b25jYXQobWdkMik7CisKKy8vIENoZWNrICJhbHdheXMiCithbGwuZm9yRWFjaChmdW5jdGlvbihs
b2NhbGUpIHsKKyAgICBsZXQgb2ZmID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3Vz
ZUdyb3VwaW5nOiBmYWxzZX0pOworICAgIGxldCBtc2cgPSAibG9jYWxlOiAiICsgbG9jYWxlICsg
IiB1c2VHcm91cGluZzogZmFsc2UiOworICAgIC8vIEluIHVzZUdyb3VwaW5nOiBmYWxzZSwgbm8g
Z3JvdXBpbmcuCisgICAgc2hvdWxkQmUoMywgb2ZmLmZvcm1hdCgxMjMpLmxlbmd0aCwgbXNnKTsK
KyAgICBzaG91bGRCZSg0LCBvZmYuZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91
bGRCZSg1LCBvZmYuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUoNiwg
b2ZmLmZvcm1hdCgxMjM0NTYpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg3LCBvZmYuZm9y
bWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworCisvLyBDaGVjayBmYWxzZQorYWxsLmZv
ckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgICAgbGV0IGFsd2F5cyA9IG5ldyBJbnRsLk51bWJl
ckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogImFsd2F5cyJ9KTsKKyAgICBsZXQgbXNnID0g
ImxvY2FsZTogIiArIGxvY2FsZSArICIgdXNlR3JvdXBpbmc6ICdhbHdheXMnIjsKKyAgICBzaG91
bGRCZSgzLCBhbHdheXMuZm9ybWF0KDEyMykubGVuZ3RoKTsKKyAgICAvLyBJbiB1c2VHcm91cGlu
ZzogImFsd2F5cyIsIGhhcyBncm91cGluZyB3aGVuIG1vcmUgdGhhbiAzIGRpZ2l0cy4uCisgICAg
c2hvdWxkQmUoNCArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNCkubGVuZ3RoLCBtc2cpOworICAgIHNo
b3VsZEJlKDUgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgICAgc2hv
dWxkQmUoNiArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hv
dWxkQmUoNyArIDIsIGFsd2F5cy5mb3JtYXQoMTIzNDU2NykubGVuZ3RoLCBtc2cpOworfSk7CisK
Ky8vIENoZWNrICJtaW4yIgorYWxsLmZvckVhY2goZnVuY3Rpb24obG9jYWxlKSB7CisgICAgbGV0
IGFsd2F5cyA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHt1c2VHcm91cGluZzogIm1p
bjIifSk7CisgICAgbGV0IG1zZyA9ICJsb2NhbGU6ICIgKyBsb2NhbGUgKyAiIHVzZUdyb3VwaW5n
OiAnbWluMiciOworICAgIHNob3VsZEJlKDMsIGFsd2F5cy5mb3JtYXQoMTIzKS5sZW5ndGgpOwor
ICAgIC8vIEluIHVzZUdyb3VwaW5nOiAibWluMiIsIG5vIGdyb3VwaW5nIGZvciA0IGRpZ2l0cyBi
dXQgaGFzIGdyb3VwaW5nCisgICAgLy8gd2hlbiBtb3JlIHRoYW4gNCBkaWdpdHMuLgorICAgIHNo
b3VsZEJlKDQsIGFsd2F5cy5mb3JtYXQoMTIzNCkubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJl
KDUgKyAxLCBhbHdheXMuZm9ybWF0KDEyMzQ1KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUo
NiArIDEsIGFsd2F5cy5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUo
NyArIDIsIGFsd2F5cy5mb3JtYXQoMTIzNDU2NykubGVuZ3RoLCBtc2cpOworfSk7CisKKy8vIENo
ZWNrICJhdXRvIgorbWdkMS5mb3JFYWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICAgIGxldCBhdXRv
ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge3VzZUdyb3VwaW5nOiAiYXV0byJ9KTsK
KyAgICBsZXQgbXNnID0gImxvY2FsZTogIiArIGxvY2FsZSArICIgdXNlR3JvdXBpbmc6ICdhdXRv
JyI7CisgICAgc2hvdWxkQmUoMywgYXV0by5mb3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgICAg
c2hvdWxkQmUoNCArIDEsIGF1dG8uZm9ybWF0KDEyMzQpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91
bGRCZSg1ICsgMSwgYXV0by5mb3JtYXQoMTIzNDUpLmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRC
ZSg2ICsgMSwgYXV0by5mb3JtYXQoMTIzNDU2KS5sZW5ndGgsIG1zZyk7CisgICAgc2hvdWxkQmUo
NyArIDIsIGF1dG8uZm9ybWF0KDEyMzQ1NjcpLmxlbmd0aCwgbXNnKTsKK30pOworbWdkMi5mb3JF
YWNoKGZ1bmN0aW9uKGxvY2FsZSkgeworICAgIGxldCBhdXRvID0gbmV3IEludGwuTnVtYmVyRm9y
bWF0KGxvY2FsZSwge3VzZUdyb3VwaW5nOiAiYXV0byJ9KTsKKyAgICBsZXQgbXNnID0gImxvY2Fs
ZTogIiArIGxvY2FsZSArICIgdXNlR3JvdXBpbmc6ICdhdXRvJyI7CisgICAgc2hvdWxkQmUoMywg
YXV0by5mb3JtYXQoMTIzKS5sZW5ndGgsIG1zZyk7CisgICAgLy8gSW4gdXNlR3JvdXBpbmc6ICJh
dXRvIiwgc2luY2UgdGhlc2UgbG9jYWxlcyBoYXMKKyAgICAvLyBtaW5pbXVtR3JvdXBpbmdEaWdp
dHN7IjIifSwgbm8gZ3JvdXBpbmcgZm9yIDQgZGlnaXRzIGJ1dCBoYXMgZ3JvdXBpbmcKKyAgICAv
LyB3aGVuIG1vcmUgdGhhbiA0IGRpZ2l0cy4uCisgICAgc2hvdWxkQmUoNCwgYXV0by5mb3JtYXQo
MTIzNCkubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJlKDUgKyAxLCBhdXRvLmZvcm1hdCgxMjM0
NSkubGVuZ3RoLCBtc2cpOworICAgIHNob3VsZEJlKDYgKyAxLCBhdXRvLmZvcm1hdCgxMjM0NTYp
Lmxlbmd0aCwgbXNnKTsKKyAgICBzaG91bGRCZSg3ICsgMiwgYXV0by5mb3JtYXQoMTIzNDU2Nyku
bGVuZ3RoLCBtc2cpOworfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IDg1
MzljOTNiNWFjYWQ2NmYwYWViY2JmZDU1OGE1ZTUzMTAyNjRiYzUuLjNjMzAxZjU3OGE1ZGI5MzE3
NDExNjIxOTAwZmQ0ZDcxYTVhNjU1ZDUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwt
bnVtYmVyZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
CkBAIC01Myw5ICs1MywxMyBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1h
dCwgcG9zc2libGVEaWZmZXJlbmNlcykgewogICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGln
aXRzOiAzLAogICAgICAgICAgICAgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiB1bmRlZmluZWQs
CiAgICAgICAgICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IHVuZGVmaW5lZCwKLSAgICAg
ICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLAorICAgICAgICAgICAgdXNlR3JvdXBpbmc6ICJhdXRv
IiwKICAgICAgICAgICAgIG5vdGF0aW9uOiAic3RhbmRhcmQiLAotICAgICAgICAgICAgc2lnbkRp
c3BsYXk6ICJhdXRvIgorICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICJhdXRvIiwKKyAgICAgICAg
ICAgIHJvdW5kaW5nTW9kZTogImhhbGZFeHBhbmQiLAorICAgICAgICAgICAgcm91bmRpbmdJbmNy
ZW1lbnQ6IDEsCisgICAgICAgICAgICB0cmFpbGluZ1plcm9EaXNwbGF5OiAiYXV0byIsCisgICAg
ICAgICAgICByb3VuZGluZ1ByaW9yaXR5OiAiYXV0byIsCiAgICAgICAgIH07CiAgICAgICAgIE9i
amVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIGRpZmZlcmVuY2UpOwogICAgICAgICByZXR1cm4g
SlNPTi5zdHJpbmdpZnkoZGVmYXVsdE9wdGlvbnMpOwpAQCAtMTg0LDkgKzE4OCw5IEBAIGZ1bmN0
aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7
CiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7bWF4aW11bVNpZ25p
ZmljYW50RGlnaXRzOiAyMn0pLCBSYW5nZUVycm9yKTsKIAogLy8gVGhlIG9wdGlvbiB1c2VHcm91
cGluZyBpcyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdE51bWJlckZvcm1hdChJ
bnRsLk51bWJlckZvcm1hdCgnZW4nLCB7dXNlR3JvdXBpbmc6IHRydWV9KSwgW3tsb2NhbGU6ICdl
bicsIHVzZUdyb3VwaW5nOiB0cnVlfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3VwaW5nOiB0cnVlfSksIFt7bG9jYWxl
OiAnZW4nLCB1c2VHcm91cGluZzogImFsd2F5cyJ9XSksIHRydWUpOwogc2hvdWxkQmUodGVzdE51
bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7dXNlR3JvdXBpbmc6IGZhbHNlfSks
IFt7bG9jYWxlOiAnZW4nLCB1c2VHcm91cGluZzogZmFsc2V9XSksIHRydWUpOwotc2hvdWxkQmUo
dGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nLCB7dXNlR3JvdXBpbmc6ICdm
YWxzZSd9KSwgW3tsb2NhbGU6ICdlbicsIHVzZUdyb3VwaW5nOiB0cnVlfV0pLCB0cnVlKTsKK3No
b3VsZEJlKHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywge3VzZUdyb3Vw
aW5nOiAnbWluMid9KSwgW3tsb2NhbGU6ICdlbicsIHVzZUdyb3VwaW5nOiAibWluMiJ9XSksIHRy
dWUpOwogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQoJ2VuJywgeyBnZXQgdXNl
R3JvdXBpbmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0pLCBFcnJvcik7CiAKIC8vIDExLjIg
UHJvcGVydGllcyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgQ29uc3RydWN0b3IKQEAgLTQzNSw3
ICs0MzksNyBAQCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2li
bGVEaWZmZXJlbmNlcykgewogewogICAgIGxldCBvcHRpb25zID0gZGVmYXVsdE5Gb3JtYXQucmVz
b2x2ZWRPcHRpb25zKCk7CiAgICAgZGVsZXRlIG9wdGlvbnMubG9jYWxlOyAKLSAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSwgJ3sibnVtYmVyaW5nU3lzdGVtIjoibGF0biIsInN0
eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJtaW5pbXVtRnJhY3Rpb25E
aWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3JvdXBpbmciOnRydWUsIm5v
dGF0aW9uIjoic3RhbmRhcmQiLCJzaWduRGlzcGxheSI6ImF1dG8ifScpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpLCBgeyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwic3R5
bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlvbkRp
Z2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6ImF1dG8iLCJu
b3RhdGlvbiI6InN0YW5kYXJkIiwic2lnbkRpc3BsYXkiOiJhdXRvIiwicm91bmRpbmdNb2RlIjoi
aGFsZkV4cGFuZCIsInJvdW5kaW5nSW5jcmVtZW50IjoxLCJ0cmFpbGluZ1plcm9EaXNwbGF5Ijoi
YXV0byIsInJvdW5kaW5nUHJpb3JpdHkiOiJhdXRvIn1gKTsKIH0KIAogLy8gTGVnYWN5IGNvbXBh
dGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2lu
dGwtcGx1cmFscnVsZXMtc2VsZWN0cmFuZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJh
bHJ1bGVzLXNlbGVjdHJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZmRlNzhlYWIxMjUzMjdkZDBkMzI5
NmJkMjZlYjdhZDFkZmVjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRs
LXBsdXJhbHJ1bGVzLXNlbGVjdHJhbmdlLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8vIENvcHlyaWdo
dCAyMDIxIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8g
ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAg
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2lmIChJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlw
ZS5zZWxlY3RSYW5nZSkgeworICAgIGNvbnN0IHBsID0gbmV3IEludGwuUGx1cmFsUnVsZXMoInNs
Iik7CisgICAgc2hvdWxkQmUoImZldyIsIHBsLnNlbGVjdFJhbmdlKDEwMiwgMjAxKSk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKaW5kZXggOTYyZDUyNDYyNTI1YWZiYjI5NmQ5YWNmZDZkOGEwYTE0NGYyMGIz
NC4uMjhlNDcxMjE1YzBiMmU1ZjczZWUxOWE1MmZhOGRjNTdjZmU5Njg5ZiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbApAQCAtMTAxLDYgKzEwMSwxMiBAQCBza2lwOgogICAgICMgaHR0cHM6Ly91bmljb2RlLW9y
Zy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9JQ1UtMjEzNjcKICAgICAtIHRlc3QvaW50bDQwMi9JbnRs
L2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1leHQtY2Fub25pY2FsaXplLXllcy10by10cnVl
LmpzCiAKKyAgICAjIEludGwuTnVtYmVyRm9ybWF0IHYzIGNoYW5nZXMgdGhlIGJlaGF2aW9yLgor
ICAgIC0gdGVzdC9pbnRsNDAyL1BsdXJhbFJ1bGVzL3Byb3RvdHlwZS9yZXNvbHZlZE9wdGlvbnMv
b3JkZXIuanMKKyAgICAtIHRlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG90eXBlL3Jlc29s
dmVkT3B0aW9ucy9iYXNpYy5qcworICAgIC0gdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90
b3R5cGUvcmVzb2x2ZWRPcHRpb25zL29yZGVyLmpzCisgICAgLSB0ZXN0L2ludGw0MDIvTnVtYmVy
Rm9ybWF0L3Rlc3Qtb3B0aW9uLXVzZUdyb3VwaW5nLmpzCisKICAgICAjIEZhaWxpbmcgYmVjYXVz
ZSB3ZSBhcmUgYnVpbGRpbmcgV2ViS2l0IHdpdGggdmVyeSBvbGQgSUNVIGhlYWRlcnMKICAgICAt
IHRlc3QvaW50bDQwMi9MaXN0Rm9ybWF0L2NvbnN0cnVjdG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMt
aW52YWxpZC5qcwogICAgIC0gdGVzdC9pbnRsNDAyL0xpc3RGb3JtYXQvY29uc3RydWN0b3IvY29u
c3RydWN0b3IvbG9jYWxlcy12YWxpZC5qcwo=
</data>
<flag name="review"
          id="467084"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
    <flag name="commit-queue"
          id="467101"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>