<?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>222739</bug_id>
          
          <creation_ts>2021-03-04 07:50:21 -0800</creation_ts>
          <short_desc>Cache cross-origin methods / accessors of Window and Location per lexical global object</short_desc>
          <delta_ts>2021-03-23 01:46:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/28029</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223629</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>223154</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735824</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-04 07:50:21 -0800</bug_when>
    <thetext>Cache cross-origin methods / accessors of Window and Location per lexical global object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735825</commentid>
    <comment_count>1</comment_count>
      <attachid>422227</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-04 07:54:17 -0800</bug_when>
    <thetext>Created attachment 422227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735826</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-04 07:55:28 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736017</commentid>
    <comment_count>3</comment_count>
      <attachid>422286</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-04 14:19:47 -0800</bug_when>
    <thetext>Created attachment 422286
Patch

Fix &amp; simplify CrossOriginMapKey, and include missing test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736071</commentid>
    <comment_count>4</comment_count>
      <attachid>422286</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-04 15:47:08 -0800</bug_when>
    <thetext>Comment on attachment 422286
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        because generated JSLocation can&apos;t be easily extended.

Is this a long term decision to never fix for location, or just a short term decision to not do it at this time?

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:314
&gt; +    JSFunction* jsFunction = m_crossOriginFunctionMap.get(key);
&gt; +    if (!jsFunction) {
&gt; +        jsFunction = JSFunction::create(lexicalGlobalObject-&gt;vm(), lexicalGlobalObject, length, propertyName.publicName(), nativeFunction);
&gt; +        m_crossOriginFunctionMap.set(key, jsFunction);
&gt; +    }
&gt; +    return jsFunction;

This is the less-efficient, double hashing, idiom. The more efficient idiom uses either add or ensure. The ensure version is something like this:

    return m_crossOriginFunctionMap.ensure(key, [&amp;] {
        return JSFunction::create(lexicalGlobalObject-&gt;vm(), lexicalGlobalObject, length, propertyName.publicName(), nativeFunction);
    }).iterator-&gt;value;

I am not sure why WeakGCMap implements set, but neither add nor ensure, so you’d need to deal with that first.

It also seems that WeakGCMap’s set function has a peculiar combination of a non-reference type (I would have expected an rvalue reference as in HashMap itself) but use of WTFMove.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:319
&gt; +    CrossOriginMapKey key = std::make_pair(lexicalGlobalObject, getter ? reinterpret_cast&lt;void*&gt;(getter) : reinterpret_cast&lt;void*&gt;(setter));

I think for clarity we should add this assertion:

    ASSERT(getter || setter);

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:328
&gt; +    GetterSetter* getterSetter = m_crossOriginGetterSetterMap.get(key);
&gt; +    if (!getterSetter) {
&gt; +        auto&amp; vm = lexicalGlobalObject-&gt;vm();
&gt; +        getterSetter = GetterSetter::create(vm, lexicalGlobalObject,
&gt; +            getter ? JSCustomGetterFunction::create(vm, lexicalGlobalObject, propertyName, getter) : nullptr,
&gt; +            setter ? JSCustomSetterFunction::create(vm, lexicalGlobalObject, propertyName, setter) : nullptr);
&gt; +        m_crossOriginGetterSetterMap.set(key, getterSetter);
&gt; +    }
&gt; +    return getterSetter;

Same as above:

    m_crossOriginFunctionMap.ensure(key, [&amp;] {
        auto&amp; vm = lexicalGlobalObject-&gt;vm();
        return GetterSetter::create(vm, lexicalGlobalObject,
            getter ? JSCustomGetterFunction::create(vm, lexicalGlobalObject, propertyName, getter) : nullptr,
            JSCustomSetterFunction::create(vm, lexicalGlobalObject, propertyName, setter) : nullptr);;
    }).iterator-&gt;value;

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:88
&gt; +    JSC::JSFunction* getCrossOriginFunction(JSC::JSGlobalObject*, JSC::PropertyName, JSC::NativeFunction, unsigned length);
&gt; +    JSC::GetterSetter* getCrossOriginGetterSetter(JSC::JSGlobalObject*, JSC::PropertyName, JSC::GetValueFunc, JSC::PutValueFunc);

WebKit coding style discourages the use of the word &quot;get&quot; in the names of functions like these.

&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:206
&gt; +            &amp;&amp; slot.isValue() &amp;&amp; isHostFunction(slot.getValue(lexicalGlobalObject, propertyName), JSDOMWindow::info()-&gt;staticPropHashTable-&gt;entry(propertyName)-&gt;function());

Rationale for looking this up at runtime instead of link time? Just so we can avoid the need for ForwardDeclareInHeader?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736762</commentid>
    <comment_count>5</comment_count>
      <attachid>422478</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-06 01:55:03 -0800</bug_when>
    <thetext>Created attachment 422478
Patch

Add WeakGCMap::ensure(), rename methods, and reword ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736783</commentid>
    <comment_count>6</comment_count>
      <attachid>422486</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-06 05:57:10 -0800</bug_when>
    <thetext>Created attachment 422486
Patch

Simplify &quot;showModalDialog&quot; lookup a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738445</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-11 07:51:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/75315814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738462</commentid>
    <comment_count>8</comment_count>
      <attachid>422937</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-11 08:45:31 -0800</bug_when>
    <thetext>Created attachment 422937
Patch

Attempt to fix Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738473</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-11 09:08:17 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 422286 [details]
&gt; Patch

Thank you for very valuable feedback, Darin! 

&gt; Is this a long term decision to never fix for location, or just a short term
&gt; decision to not do it at this time?

The patch does fix Location; reworded ChangeLog to clarify.
It is a long term decision to have cache maps that handle both Window and Location only in one place (on JSDOMGlobalObject).

&gt; This is the less-efficient, double hashing, idiom. The more efficient idiom
&gt; uses either add or ensure. The ensure version is something like this:
&gt; 
&gt;     return m_crossOriginFunctionMap.ensure(key, [&amp;] {
&gt;         return JSFunction::create(lexicalGlobalObject-&gt;vm(),
&gt; lexicalGlobalObject, length, propertyName.publicName(), nativeFunction);
&gt;     }).iterator-&gt;value;

Wow, this is a great suggestion!
Apart from avoiding double hashing, it&apos;s also a nice cleanup.
Applied the similar change to helper methods of JSObject::getOwnPropertyDescriptor().

&gt; I think for clarity we should add this assertion:
&gt; 
&gt;     ASSERT(getter || setter);

Added.

&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:88
&gt; &gt; +    JSC::JSFunction* getCrossOriginFunction(JSC::JSGlobalObject*, JSC::PropertyName, JSC::NativeFunction, unsigned length);
&gt; &gt; +    JSC::GetterSetter* getCrossOriginGetterSetter(JSC::JSGlobalObject*, JSC::PropertyName, JSC::GetValueFunc, JSC::PutValueFunc);
&gt; 
&gt; WebKit coding style discourages the use of the word &quot;get&quot; in the names of
&gt; functions like these.

Renamed to &quot;createCrossOrigin*&quot; in JSDOMGlobalObject.h and similar methods in JSObject.cpp to drop the &quot;get&quot;.

&gt; Rationale for looking this up at runtime instead of link time? Just so we
&gt; can avoid the need for ForwardDeclareInHeader?

Yes, only that; reworded ChangeLog to make it clear.
Please note that only &quot;showModalDialog&quot; is affected, which is already removed from Chrome and Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738694</commentid>
    <comment_count>10</comment_count>
      <attachid>422986</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-11 16:12:52 -0800</bug_when>
    <thetext>Created attachment 422986
Patch

Proper Windows build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739118</commentid>
    <comment_count>11</comment_count>
      <attachid>422986</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-13 00:40:19 -0800</bug_when>
    <thetext>Comment on attachment 422986
Patch

(In reply to Alexey Shvayka from comment #10)
&gt; Created attachment 422986 [details]
&gt; Patch
&gt; 
&gt; Proper Windows build fix.

That did the trick. Judging by other Windows builds, the failures are pre-existing, but were not confirmed as such because rebuild without patch has failed.

I am putting r+ on my own patch so the WPT export bot would (hopefully) approve my PR.
The bot doesn&apos;t consider the patch reviewed by Darin as it&apos;s now obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739122</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-13 01:02:47 -0800</bug_when>
    <thetext>Committed r274379 (235246@main): &lt;https://commits.webkit.org/235246@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739186</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-03-13 18:46:20 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 223154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739190</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-13 18:48:30 -0800</bug_when>
    <thetext>@Alexey Hi! I temporarily reverted this patch since it looks like we are getting some crashes after this patch.

https://results.webkit.org/?suite=layout-tests&amp;test=http%2Ftests%2Fsecurity%2Freferrer-policy-header.html
https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fhtml%2Fbrowsers%2Fwindows%2Fnested-browsing-contexts%2Fname-attribute.window.html

Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739264</commentid>
    <comment_count>15</comment_count>
      <attachid>423132</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-14 13:43:54 -0700</bug_when>
    <thetext>Created attachment 423132
Patch

Revert WeakGCMap::ensure() change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739273</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-14 15:05:59 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; @Alexey Hi! I temporarily reverted this patch since it looks like we are
&gt; getting some crashes after this patch.

Hey! I can confirm these tests are consistently crashing for me locally too. Not sure how the patch passed EWS.

I&apos;ve tracked down the crashes to WeakGCMap::ensure() returning nullptr for (weakly referenced object) value after it was GCed but before WeakGCMap&apos;s entries were pruned.

HashMap nicely handles empty and deleted keys, but not values, so I&apos;ve brought back double hashing approach that not only checks if the key exists, but also that the value is non-null.

In future, we can optimize jsDOMWindowGetOwnPropertySlotRestrictedAccess() to return a cacheable (by raw C++ pointer) slot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739284</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-14 16:05:31 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #16)
&gt; HashMap nicely handles empty and deleted keys, but not values, so I&apos;ve
&gt; brought back double hashing approach that not only checks if the key exists,
&gt; but also that the value is non-null.

Do we have to bring back double hashing? Can we just add a null check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739929</commentid>
    <comment_count>18</comment_count>
      <attachid>423327</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-16 07:27:24 -0700</bug_when>
    <thetext>Created attachment 423327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739931</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-16 07:29:54 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; Do we have to bring back double hashing? Can we just add a null check?

My bad, we don&apos;t: instead, I&apos;ve decorated HashMap::ensure() to perform null check for existing entries.
If GCed weak object is encountered, HashMap is updated using AddResult&apos;s iterator, thus completely avoiding double hashing.
ensureValue() method name to better reflect its behavior / return value: no more `}).iterator-&gt;value.get()` needed. Neat!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740288</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-16 16:01:04 -0700</bug_when>
    <thetext>Committed r274528: &lt;https://commits.webkit.org/r274528&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423327.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422227</attachid>
            <date>2021-03-04 07:54:17 -0800</date>
            <delta_ts>2021-03-04 14:19:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210304175414.patch</filename>
            <type>text/plain</type>
            <size>50877</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDIxLTAzLTA0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9t
e0csU31ldHRlckZ1bmN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBub24tbnVsbCBmdW5jdGlvbiBwb2lu
dGVyLgorCisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlND
dXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Om5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGwpOiBEZWxldGVkLgorCiAyMDIxLTAzLTAzICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2Fu
dmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDkgKzQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3Rv
bUdldHRlckZ1bgogCiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyRnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwot
CiAgICAgR2V0VmFsdWVGdW5jIGdldHRlciA9IGN1c3RvbUdldHRlckZ1bmN0aW9uLT5nZXR0ZXIo
KTsKLSAgICBBU1NFUlQoZ2V0dGVyKTsKIAogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IGN1
c3RvbUdldHRlckZ1bmN0aW9uLT5kb21BdHRyaWJ1dGUoKSkgewogICAgICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKQpAQCAtNjIsNiArNjAs
NyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1CiAKIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
PiBkb21BdHRyaWJ1dGUpCiB7CisgICAgQVNTRVJUKGdldHRlcik7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21HZXR0ZXJGdW5jdGlv
bkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21HZXR0
ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgZG9tQXR0
cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihjdXN0b21TCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tU2V0dGVyRnVuY3Rp
b25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8SlNDdXN0b21TZXR0ZXJG
dW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigpOwotICAgIEFTU0VSVChz
ZXR0ZXIpOwogICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDks
NiArNDgsNyBAQCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1CiAKIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQogeworICAgIEFTU0VSVChzZXR0ZXIpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3Vz
dG9tU2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3Ry
aW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2V0dGVyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiAyNzM4ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDE0LDkgKzQxNCw0IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhW
TSYgdm0KICAgICB9CiB9CiAKLXRlbXBsYXRlPFJhd05hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uLCBpbnQgbGVuZ3RoPiBFbmNvZGVkSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25H
ZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NiBAQAorMjAyMS0wMy0wNCAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mt
b3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4
aWNhbCBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGb3IgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMsIFdpbmRvdyBh
bmQgTG9jYXRpb24gb2JqZWN0cyByZXR1cm4gZGlmZmVyZW50IEpTRnVuY3Rpb24KKyAgICAgICAg
aW5zdGFuY2VzIG9uIGV2ZXJ5IFtbR2V0XV0uIFRoZSBpbnRlbnQgd2FzIHRvIGVuc3VyZSBpc29s
YXRpb24gYnkgc3VwcGx5aW5nIGRpZmZlcmVudCBSZWFsbXMgd2l0aAorICAgICAgICBkaWZmZXJl
bnQgZnVuY3Rpb24gb2JqZWN0cy4gSG93ZXZlciwgdGhpcyBmYWlscyByZWZlcmVuY2UgZXF1YWxp
dHkgd2l0aCBzdWJzZXF1ZW50IGxvb2t1cHMgZm9yCisgICAgICAgIHRoZSBzYW1lIFJlYWxtIGFu
ZCBjcm9zcy1vcmlnaW4gbWV0aG9kIC8gYWNjZXNzb3IsIHdoaWNoIGlzIHJhdGhlciBjb25mdXNp
bmc6CisKKyAgICAgICAgICAgIGBjcm9zc09yaWdpbldpbmRvdy5mb2N1cyA9PT0gY3Jvc3NPcmln
aW5XaW5kb3cuZm9jdXMgLy8gPT4gZmFsc2VgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIFtbQ3Jvc3NPcmlnaW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXSB0byBicmluZyBjb25zaXN0
ZW50IGZ1bmN0aW9uIGlkZW50aXR5IFsxXS4KKyAgICAgICAgV2hpbGUgdGhlIHNwZWMgaGFzIGl0
IG9uIGJvdGggV2luZG93wqBhbmQgTG9jYXRpb24sIHRoaXMgY2hhbmdlIGFkZHMgY2FjaGUgbWFw
cyBvbmx5IHRvIEpTRE9NR2xvYmFsT2JqZWN0CisgICAgICAgICh0byBhY2NvbW1vZGF0ZSBSZW1v
dGVET01XaW5kb3cpIGJlY2F1c2UgZ2VuZXJhdGVkIEpTTG9jYXRpb24gY2FuJ3QgYmUgZWFzaWx5
IGV4dGVuZGVkLgorCisgICAgICAgIEFzIGEgY2FjaGUgbWFwIGtleSwgYSBjb21iaW5hdGlvbiBv
ZiBsZXhpY2FsIGdsb2JhbCBvYmplY3QsIHByb3BlcnR5IG5hbWUsIGFuZCBvYmplY3QgdHlwZSBp
cyB1c2VkLgorICAgICAgICBBbHRob3VnaCB0aGUgbGF0dGVyIG9uZSBpcyBjdXJyZW50bHkgdW5u
ZWNlc3Nhcnkgc2luY2UgV2luZG93IGFuZCBMb2NhdGlvbiBoYXZlIG5vIGtleXMgaW4gY29tbW9u
LAorICAgICAgICBpdCdzIGVuY29kZWQgYWxvbmcgd2l0aCBVbmlxdWVkU3RyaW5nSW1wbCogZm9y
IHJvYnVzdG5lc3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIDkgY3VzdG9tIGdldHRl
cnMgYW5kIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSBleHRlbmRlZCBhdHRyaWJ1dGU6IGl0J3Mg
bm93IHVudXNlZCwKKyAgICAgICAgdW50cml2aWFsIHRvIGdlbmVyYXRlLCBhbmQgY2FuIGJlIGVh
c2lseSByZXBsYWNlZCB3aXRoIGBzdGF0aWNQcm9wSGFzaFRhYmxlYCBsb29rdXAgaWYgbmVjZXNz
YXJ5CisgICAgICAgIChsaWtlIGl0J3MgZG9uZSBmb3IgYHNob3dNb2RhbERpYWxvZ2ApLgorCisg
ICAgICAgIEFsc28sIGZpeGVzIGNyb3NzLXJlYWxtIGBwb3N0TWVzc2FnZS5sZW5ndGhgIHRvIGVx
dWFsIDEgYXMgcGVyIFdlYklETC4KKworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5
aGVscGVyLSgtbywtcC0pCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mt
b3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy5odG1sCisgICAgICAgICAgICAgICBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCisg
ICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLW5hbWUuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90
Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmlkbDoKKyAg
ICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRv
dy5pZGw6CisKIDIwMjEtMDMtMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5Tm9u
Um9vdElubGluZUJveGVzIHNob3VsZCBjaGVjayBpZiB0aGUgbGluZSBoYXMgaW5saW5lIGJveGVz
IGF0IGFsbApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw4
IEBAIEpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChWTSYKICAgICAsIG1fd29y
bGQoV1RGTW92ZSh3b3JsZCkpCiAgICAgLCBtX3dvcmxkSXNOb3JtYWwobV93b3JsZC0+aXNOb3Jt
YWwoKSkKICAgICAsIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKHZtKQorICAgICwgbV9jcm9z
c09yaWdpbkZ1bmN0aW9uTWFwKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkdldHRlclNldHRlck1h
cCh2bSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcs
MTkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViQ29yZUpTQnVpbHRpbkludGVybmFs
cy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGlu
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBj
bGFzcyBDcm9zc09yaWdpbk9iamVjdCA6IHVpbnQ4X3QgeyBXaW5kb3csIExvY2F0aW9uIH07CisK
IGNsYXNzIERPTUd1YXJkZWRPYmplY3Q7CiBjbGFzcyBFdmVudDsKIGNsYXNzIERPTVdyYXBwZXJX
b3JsZDsKQEAgLTgzLDYgKzg5LDM1IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SlNQcm94eSYgcHJv
eHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuICptX3Byb3h5LmdldCgpOyB9CiAK
KyAgICB1c2luZyBDcm9zc09yaWdpbk1hcEtleSA9IHN0ZDo6cGFpcjxKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdWludHB0cl90PjsKKworICAgIHRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmpl
Y3RUeXBlPgorICAgIEpTQzo6SlNGdW5jdGlvbiogZ2V0Q3Jvc3NPcmlnaW5GdW5jdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIENyb3NzT3JpZ2luTWFwS2V5IGtleSA9IG1ha2VDcm9z
c09yaWdpbk1hcEtleShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG9iamVjdFR5
cGUpOworICAgICAgICBhdXRvKiBqc0Z1bmN0aW9uID0gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFw
LmdldChrZXkpOworICAgICAgICBpZiAoIWpzRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGpzRnVu
Y3Rpb24gPSBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZW5ndGgsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCks
IG5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcC5z
ZXQoa2V5LCBqc0Z1bmN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ganNGdW5jdGlv
bjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Q3Jvc3NPcmlnaW5PYmplY3Qgb2JqZWN0VHlwZT4K
KyAgICBKU0M6OkdldHRlclNldHRlciogZ2V0Q3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU0M6OkdldFZhbHVlRnVuYyBnZXR0ZXIsIEpTQzo6UHV0VmFsdWVGdW5jIHNl
dHRlcikKKyAgICB7CisgICAgICAgIENyb3NzT3JpZ2luTWFwS2V5IGtleSA9IG1ha2VDcm9zc09y
aWdpbk1hcEtleShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG9iamVjdFR5cGUp
OworICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVy
TWFwLmdldChrZXkpOworICAgICAgICBpZiAoIWdldHRlclNldHRlcikgeworICAgICAgICAgICAg
YXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgZ2V0dGVy
U2V0dGVyID0gSlNDOjpHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVj
dCwKKyAgICAgICAgICAgICAgICBnZXR0ZXIgPyBKU0M6OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246
OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXIpIDog
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICBzZXR0ZXIgPyBKU0M6OkpTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzZXR0
ZXIpIDogbnVsbHB0cik7CisgICAgICAgICAgICBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFw
LnNldChrZXksIGdldHRlclNldHRlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdldHRl
clNldHRlcjsKKyAgICB9CisKIHB1YmxpYzoKICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIApA
QCAtMTI0LDcgKzE1OSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQnVpbHRpbkdsb2JhbHMo
SlNDOjpWTSYpOwogICAgIGZyaWVuZCB2b2lkIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zOjpp
bml0aWFsaXplKEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKKyAgICBDcm9zc09yaWdpbk1hcEtleSBt
YWtlQ3Jvc3NPcmlnaW5NYXBLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBDcm9zc09yaWdpbk9iamVjdCBv
YmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxleGljYWxH
bG9iYWxPYmplY3QsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHByb3BlcnR5TmFtZS51aWQoKSkg
fCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihvYmplY3RUeXBlKSA8PCA0OCkpOworICAgIH0KKwog
ICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25z
OworICAgIEpTQzo6V2Vha0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkpTRnVuY3Rpb24+
IG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcDsKKyAgICBKU0M6OldlYWtHQ01hcDxDcm9zc09yaWdp
bk1hcEtleSwgSlNDOjpHZXR0ZXJTZXR0ZXI+IG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXJNYXA7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1Y3RvckNsYXNzPgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24g
MjczODg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMiArNDgsOSBAQAogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0J1aWx0aW5OYW1lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNl
dHRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVybmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNNaWNyb3Rhc2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Mb29rdXAuaD4KQEAgLTY3LDU4ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVy
Tm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2Fj
aGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5n
KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcpOwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0Vf
SEFORExFUlMpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd193
ZWJraXQpOwogI2VuZGlmCiAKLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdp
bmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17
Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXIsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbl9ibHVyTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4g
bm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fYmx1ciwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3Nl
Tm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
Y2xvc2UsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlv
bkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Jl
bW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
PGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1cywgMD4oZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsK
LSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fZm9jdXMsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
LX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAg
cmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNl
RnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAg
IHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZSwgMj4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBKU0RPTVdpbmRvdzo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oVmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTE1Nyw0NSArMTA2
LDM0IEBAIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmkKICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVs
cGVyLSgtbywtcC0pCiAKICAgICAvLyBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3ZSBhbGxvdyBh
Y2Nlc3MgdG8gY3Jvc3Mtb3JpZ2luIChEb05vdENoZWNrU2VjdXJpdHkgaW4gSURMKS4KLSAgICAv
LyBBbHdheXMgcHJvdmlkZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24sIG9uIGEgZnJlc2ggdW5jYWNo
ZWQgZnVuY3Rpb24gb2JqZWN0LgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LmJsdXJQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRv
d1R5cGU6OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9u
Q2FjaGluZyA6IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5jbG9zZVB1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0g
RE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2Nsb3NlTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNh
Y2hpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMuZm9jdXNQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRD
dXN0b20odGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5k
b3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
Zm9jdXNOb25DYWNoaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7Ci0g
ICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90
ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nIDoganNET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyk7CisgICAgYXV0byog
Y2xhc3NJbmZvID0gd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBKU1JlbW90
ZURPTVdpbmRvdzo6aW5mbygpIDogSlNET01XaW5kb3c6OmluZm8oKTsKKyAgICBpZiAocHJvcGVy
dHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZVB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZvY3VzUHVibGljTmFtZSgpCisgICAgICAgIHx8IHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuYmx1clB1YmxpY05hbWUoKQorICAgICAgICB8fCBw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7Cisg
ICAgICAgIGF1dG8qIGVudHJ5ID0gY2xhc3NJbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRy
eShwcm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvKiBqc0Z1bmN0aW9uID0gdGhpc09iamVjdC0+
Z2V0Q3Jvc3NPcmlnaW5GdW5jdGlvbjxDcm9zc09yaWdpbk9iamVjdDo6V2luZG93PigmbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmZ1
bmN0aW9uTGVuZ3RoKCkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwganNG
dW5jdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIFdoZW4gYWNj
ZXNzaW5nIGNyb3NzLW9yaWdpbiBrbm93biBXaW5kb3cgcHJvcGVydGllcywgd2UgYWx3YXlzIHVz
ZSB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZ2V0dGVyLAogICAgIC8vIGV2ZW4gaWYgdGhlIHByb3Bl
cnR5IHdhcyByZW1vdmVkIC8gcmVkZWZpbmVkLiBBcyBvZiBlYXJseSAyMDE2LCB0aGlzIG1hdGNo
ZXMgRmlyZWZveCBhbmQgQ2hyb21lJ3MKICAgICAvLyBiZWhhdmlvci4KLSAgICBhdXRvKiBjbGFz
c0luZm8gPSB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IEpTUmVtb3RlRE9N
V2luZG93OjppbmZvKCkgOiBKU0RPTVdpbmRvdzo6aW5mbygpOwotICAgIGlmIChhdXRvKiBlbnRy
eSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKSkg
ewotICAgICAgICAvLyBPbmx5IGFsbG93IGFjY2VzcyB0byB0aGVzZSBzcGVjaWZpYyBwcm9wZXJ0
aWVzLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1
YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5j
bG9zZWRQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGlu
TmFtZXMuc2VsZlB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMuZnJhbWVzUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLm9wZW5lclB1YmxpY05hbWUoKQotICAgICAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1lKCkKLSAgICAg
ICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9wUHVibGljTmFtZSgpKSB7
Ci0gICAgICAgICAgICBhdXRvKiBnZXR0ZXIgPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVh
dGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0
eUdldHRlcigpKTsKLSAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHByb3BlcnR5TmFtZSA9PSBi
dWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBKU0N1c3RvbVNldHRlckZ1bmN0aW9u
OjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5w
cm9wZXJ0eVB1dHRlcigpKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0
ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIGdldHRl
ciwgc2V0dGVyKTsKLSAgICAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0s
IGdldHRlclNldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLndpbmRvd1B1YmxpY05hbWUoKQorICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnNlbGZQdWJsaWNOYW1lKCkKKyAg
ICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUo
KQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlZFB1YmxpY05h
bWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZyYW1lc1B1Ymxp
Y05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9wUHVibGljTmFt
ZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGlj
TmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucGFyZW50UHVi
bGljTmFtZSgpKSB7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gY2xhc3NJbmZvLT5zdGF0aWNQcm9w
SGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvKiBzZXR0ZXIgPSBw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpID8gZW50cnkt
PnByb3BlcnR5UHV0dGVyKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIg
PSB0aGlzT2JqZWN0LT5nZXRDcm9zc09yaWdpbkdldHRlclNldHRlcjxDcm9zc09yaWdpbk9iamVj
dDo6V2luZG93PigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJv
cGVydHlHZXR0ZXIoKSwgc2V0dGVyKTsKKyAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSwgZ2V0dGVyU2V0dGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgLy8gQ2hlY2sgZm9yIGNoaWxkIGZyYW1lcyBieSBuYW1lIGJlZm9yZSBidWlsdC1pbiBwcm9w
ZXJ0aWVzIHRvIG1hdGNoIE1vemlsbGEuIFRoaXMgZG9lcwpAQCAtMjY1LDcgKzIwMyw3IEBAIGJv
b2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICAgICAgLy8gRGV0ZWN0
IHdoZW4gd2UncmUgZ2V0dGluZyB0aGUgcHJvcGVydHkgJ3Nob3dNb2RhbERpYWxvZycsIHRoaXMg
aXMgZGlzYWJsZWQsIGFuZCBoYXMgaXRzIG9yaWdpbmFsIHZhbHVlLgogICAgICAgICBib29sIGlz
U2hvd01vZGFsRGlhbG9nQW5kU2hvdWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSkt
PmJ1aWx0aW5OYW1lcygpLnNob3dNb2RhbERpYWxvZ1B1YmxpY05hbWUoKQogICAgICAgICAgICAg
JiYgKCFmcmFtZSB8fCAhRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZyYW1lKSkKLSAg
ICAgICAgICAgICYmIHNsb3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9uKHNsb3QuZ2V0VmFs
dWUobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5j
ZUZ1bmN0aW9uX3Nob3dNb2RhbERpYWxvZyk7CisgICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUo
KSAmJiBpc0hvc3RGdW5jdGlvbihzbG90LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSksIEpTRE9NV2luZG93OjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVu
dHJ5KHByb3BlcnR5TmFtZSktPmZ1bmN0aW9uKCkpOwogICAgICAgICAvLyBVbmxlc3Mgd2UncmUg
aW4gdGhlIHNob3dNb2RhbERpYWxvZyBzcGVjaWFsIGNhc2UsIHdlJ3JlIGRvbmUuCiAgICAgICAg
IGlmICghaXNTaG93TW9kYWxEaWFsb2dBbmRTaG91bGRIaWRlKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmgJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDYgQEAgZW51
bSBjbGFzcyBET01XaW5kb3dUeXBlIHsgTG9jYWwsIFJlbW90ZQogdGVtcGxhdGUgPERPTVdpbmRv
d1R5cGUgd2luZG93VHlwZT4KIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0
cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jiwg
Y29uc3QgU3RyaW5nJik7CiAKLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgeyBXaW5kb3cs
IExvY2F0aW9uIH07Ci0KIHRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmplY3RUeXBlPgog
dm9pZCBhZGRDcm9zc09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTsKIGJvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Q
cm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyNzM4ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMjEgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Mb29rdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNMb2NhdGlvbkluc3RhbmNl
RnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOwotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8
anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZSwgMT4oZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwotfQotCiBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNM
b2NhdGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CkBAIC02NCw3ICs1NSw5IEBAIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKIAogICAgIC8vIFdlIG9ubHkgYWxs
b3cgYWNjZXNzIHRvIExvY2F0aW9uLnJlcGxhY2UoKSBjcm9zcyBvcmlnaW4uCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlKSB7Ci0gICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKCZ0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwganNMb2NhdGlv
bkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOworICAgICAgICBhdXRvKiBlbnRy
eSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgYXV0byoganNGdW5jdGlvbiA9IHRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCktPmdldENyb3NzT3JpZ2luRnVuY3Rpb248Q3Jvc3NPcmlnaW5PYmplY3Q6OkxvY2F0aW9u
PigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSwg
ZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCkpOworICAgICAgICBzbG90LnNldFZhbHVlKCZ0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0sIGpzRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTcy
LDggKzY1LDcgQEAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpTTAogICAg
IC8vIGEgZGVzY3JpcHRvciB0aGF0IGhhcyBhIHNldHRlciBidXQgbm8gZ2V0dGVyLgogICAgIGlm
IChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05h
bWUoKSkgewogICAgICAgICBhdXRvKiBlbnRyeSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGlj
UHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKLSAgICAgICAgYXV0byogc2V0dGVy
ID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7Ci0gICAgICAgIGF1dG8q
IGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9i
amVjdCwgbnVsbHB0ciwgc2V0dGVyKTsKKyAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKS0+Z2V0Q3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXI8Q3Jvc3NP
cmlnaW5PYmplY3Q6OkxvY2F0aW9uPigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIHNsb3Quc2V0R2V0
dGVyU2xvdCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMw
NjYsOSArMzA2Niw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIG15ICRudW1DdXN0b21PcGVy
YXRpb25zID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKLSAgICBteSAk
aGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAwOwotICAgIG15ICRoYXNGb3J3YXJkRGVj
bGFyaW5nQXR0cmlidXRlcyA9IDA7Ci0KICAgICBteSAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDA7
CiAKICAgICAjIEF0dHJpYnV0ZSBhbmQgZnVuY3Rpb24gZW51bXMKQEAgLTMwODQsOCArMzA4MSw2
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICRoYXNET01KSVRBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntET01KSVR9OwotCi0gICAgICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmlu
Z0F0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTQ0LDcgKzMxMzks
NiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHsk
aW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAkbnVtQ3VzdG9tT3BlcmF0aW9ucysr
IGlmIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKTsKLSAgICAgICAgJGhhc0ZvcndhcmREZWNs
YXJpbmdPcGVyYXRpb25zID0gMSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntG
b3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICB9CiAKICAgICBpZiAoJG51bUN1c3RvbU9wZXJh
dGlvbnMgPiAwKSB7CkBAIC0zMjcwLDUyICszMjY0LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAK
ICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNz
TmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbigkaW50
ZXJmYWNlKTsKIAotICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMpIHsKLSAg
ICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAo
QHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0
aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsK
LSAgICAgICAgICAgIG5leHQgdW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwotCi0gICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKLSAgICAgICAg
ICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKLSAgICAgICAgICAgICAg
ICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lk
ZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVD
b25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUp
IDogdW5kZWY7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRv
cGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oJHtmdW5jdGlvbk5hbWV9KTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBp
ZiAkaW5BcHBsZUNvcHlyaWdodDsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiXG4iKTsK
LSAgICB9Ci0KLSAgICBpZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEF0dHJpYnV0ZXNcblxuIik7Ci0gICAgICAgIGZv
cmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAg
ICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwot
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdl
dEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUigke2dldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJp
YnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVy
TmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRl
cn0pO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIH0KLSAgICB9Ci0K
ICAgICAjIENoZWNrSlNDYXN0IFNuaXBwZXQgZnVuY3Rpb24uCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgJGhlYWRlckluY2x1ZGVz
eyI8SmF2YVNjcmlwdENvcmUvU25pcHBldC5oPiJ9ID0gMTsKQEAgLTQzMDcsNyArNDI1NSw2IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIv
LyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50
ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57
b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAg
ICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERl
Y2xhcmVJbkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOwogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVx
ICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKQEAgLTQzNTMsNyArNDMwMCw2IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAg
ICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwog
CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2Vu
ZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAy
NzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw2IEBACiAgICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkIgogICAgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiRm9yd2FyZERlY2xhcmVJbkhlYWRlciI6IHsK
LSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24i
XQotICAgICAgICB9LAogICAgICAgICAiR2VuZXJhdGVJc1JlYWNoYWJsZSI6IHsKICAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVl
cyI6IFsiIiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBsQ2FudmFz
QmFzZSIsICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25lck5vZGVS
b290IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21ET01XaW5k
b3ciLCAiUmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2MiwxMSBAQAogICAgIFtSZXBsYWNlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3Agc3RhdHVzYmFyOwogICAgIFtSZXBsYWNlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3AgdG9vbGJhcjsKICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHN0YXR1czsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJl
bnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0g
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxX
aXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICBbRG9Ob3RDaGVj
a1NlY3VyaXR5XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAgdW5kZWZp
bmVkIHN0b3AoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnRX
aW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwotICAgIFtE
b05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBibHVy
KCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1
bmRlZmluZWQgZm9jdXMoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRlZmluZWQgYmx1
cigpOwogCiAgICAgLy8gb3RoZXIgYnJvd3NpbmcgY29udGV4dHMKICAgICBbUmVwbGFjZWFibGUs
IERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CkBAIC05MSw4ICs5MSw4IEBACiAgICAgRE9NU3RyaW5n
PyBwcm9tcHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRlZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRlZmluZWQgcHJpbnQoKTsKIAotICAgIFtD
YWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHks
IEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9z
dE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNl
cXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhl
YWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2Fn
ZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOworICAgIFtDYWxs
V2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0
cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBb
XSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hl
Y2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogCiAK
ICAgICAvLyBPYnNvbGV0ZTogU3RpbGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uICho
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCkBAIC0xMTksNyAr
MTE5LDcgQEAKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZF
TlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2VzdHVyZXN0YXJ0OwogCiAgICAgLy8gTm9u
LXN0YW5kYXJkOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uIGFuZCBieSBvdGhlciBicm93c2Vycy4KLSAgICBbQ3VzdG9tLCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIGFueSBk
aWFsb2dBcmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZUFyZ3MpOworICAgIFtDdXN0b21d
IGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgYW55IGRpYWxvZ0Fy
Z3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CiAKICAgICAvLyBOb24tc3RhbmRh
cmQ6IHNob3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhpcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc5NjUzKS4KICAgICAvLyBCbGluayBhbHJlYWR5IGRlcHJlY2F0
ZWQgaXQgKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWls
P2lkPTQzNzU2OSkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHJldmlzaW9uIDI3Mzg4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDkgKzMzLDkgQEAKICAgICBhdHRyaWJ1dGUgU2Nyb2xsUmVzdG9yYXRpb24gc2Nyb2xsUmVz
dG9yYXRpb247CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBzdGF0ZTsKIAot
ICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVk
IGJhY2soKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJd
IHVuZGVmaW5lZCBmb3J3YXJkKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOworICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGJhY2soKTsKKyAgICBbQ2FsbFdpdGg9RG9j
dW1lbnRdIHVuZGVmaW5lZCBmb3J3YXJkKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRl
ZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOwogCiAgICAgLy8gRklYTUU6IHRpdGxl
IHNob3VsZCBub3QgYmUgbnVsbGFibGUgYXMgcGVyIHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9
IG51bGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI3Mzg4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw5ICs0NSw5IEBACiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxXaXRo
PUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0
cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0aD1BY3Rp
dmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwotICAgIFtEb05vdENoZWNr
U2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNl
cHRpb24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmlu
ZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFk
ZXJdIHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0
V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJs
KTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RX
aW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJs
KTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7CiAKICAg
ICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCiAgICAgW1NldHRlckNhbGxXaXRoPUFj
dGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwcm90b2NvbDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3Mzg4
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBJbXBsZW1l
bnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSB3aW5kb3c7CiAgICAg
W1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgc2VsZjsKICAgICBb
UHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBM
b2NhdGlvbj8gbG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG51bGxhYmxlLgotICAg
IFtDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5k
ZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKLSAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93LCBG
b3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9jdXMoKTsKLSAgICBbRm9yd2FyZERl
Y2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50
RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIGNsb3NlZDsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgZm9j
dXMoKTsKKyAgICB1bmRlZmluZWQgYmx1cigpOwogICAgIFtSZXBsYWNlYWJsZSwgSW1wbGVtZW50
ZWRBcz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwogICAgIFtS
ZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAg
IFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBvcGVuZXI7CiAgICAgW1JlcGxh
Y2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHBhcmVudDsKLSAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRl
cl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3Jp
Z2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxs
V2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9i
amVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODg4KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDMtMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQg
TG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vz
cy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25h
dmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWw6CisKIDIwMjEtMDMtMDQgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIGNoZWNrIHBsYXRmb3Jt
RGF0YSB3aGVuIGRlY29kaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjczODg4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5jbG9zZSBpcyBhbiBpbnN0YW5jZSBv
ZiBGdW5jdGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNT
IHcuYmx1ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LnBvc3RNZXNzYWdlIGlz
IGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xvc2UgaXMgdy5jbG9zZQorUEFTUyB3
LmZvY3VzIGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcuYmx1cgorUEFTUyB3LnBvc3RNZXNz
YWdlIGlzIHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVzc2FnZS5sZW5ndGggaXMgMQogUEFT
UyB3LnBvc3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1Mgdy5mb2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB3LmJsdXIoKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwJ
KHJldmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
cm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
MTEgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBzaG91bGRCZVR5cGUoIncuZm9jdXMiLCAi
RnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVR5cGUoIncuYmx1ciIsICJGdW5jdGlvbiIpOwogICAg
IHNob3VsZEJlVHlwZSgidy5wb3N0TWVzc2FnZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJl
KCJ3LmNsb3NlIiwgIncuY2xvc2UiKTsKKyAgICBzaG91bGRCZSgidy5mb2N1cyIsICJ3LmZvY3Vz
Iik7CisgICAgc2hvdWxkQmUoIncuYmx1ciIsICJ3LmJsdXIiKTsKKyAgICBzaG91bGRCZSgidy5w
b3N0TWVzc2FnZSIsICJ3LnBvc3RNZXNzYWdlIik7CisgICAgc2hvdWxkQmUoIncucG9zdE1lc3Nh
Z2UubGVuZ3RoIiwgIjEiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5wb3N0TWVzc2FnZSgndGVz
dCcsICcqJykiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5mb2N1cygpIik7CiAgICAgc2hvdWxk
Tm90VGhyb3coIncuYmx1cigpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMy0wNCAgQWxleGV5IFNodmF5
a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2lu
IG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBn
bG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWNhY2hpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
LWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1s
OiBBZGRlZC4KKwogMjAyMS0wMy0wNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBpbml0aWFsIHZhbHVlIGZvciBib3JkZXItaW1hZ2Utb3V0c2V0IHNob3Vs
ZCBiZSAwCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLWNhY2hpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2Fj
aGluZy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4t
b2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2lu
ZG93IG1ldGhvZHMgYXJlIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29y
cyBhcmUgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9k
IGlzIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBpcyBj
YWNoZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4t
b2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxl
PkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNhY2hlZCBwZXIgUmVhbG0g
dmlhW1tDcm9zc09yaWdpblByb3BlcnR5RGVzY3JpcHRvck1hcF1dPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJv
d3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRp
diBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdygp
OworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzKSB7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLCB3W2tleV0sIGB3LiR7a2V5fSB2aWEgW1tHZXRd
XWApOworICAgICAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEudmFsdWUsIGRl
c2MyLnZhbHVlLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0KK30s
ICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgYXJlIGNhY2hlZCIpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRv
dygpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dBY2Nlc3NvcnMp
IHsKKyAgICAgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHcsIGtleSk7CisgICAgICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLmdldCwgZGVzYzIu
Z2V0LCBgdy4ke2tleX0gZ2V0dGVyYCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIp
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuc2V0LCBkZXNjMi5zZXQsIGB3LiR7
a2V5fSBzZXR0ZXJgKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93
IGFjY2Vzc29ycyBhcmUgY2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KCk7CisgICAgYXNzZXJ0X2Vx
dWFscyh3LmxvY2F0aW9uLnJlcGxhY2UsIHcubG9jYXRpb24ucmVwbGFjZSwgInZpYSBbW0dldF1d
Iik7CisgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcu
bG9jYXRpb24sICJyZXBsYWNlIik7CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBsYWNlIik7CisgICAgYXNzZXJ0X2VxdWFs
cyhkZXNjMS52YWx1ZSwgZGVzYzIudmFsdWUsICJ2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dIik7Cit9
LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkIik7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3Nz
T3JpZ2luV2luZG93KCk7CisgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0
X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9u
IGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NiBAQAorCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ2xl
bmd0aCcKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgaGF2ZSBjb3JyZWN0ICds
ZW5ndGgnCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBj
b3JyZWN0ICdsZW5ndGgnCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVy
IGhhcyBjb3JyZWN0ICdsZW5ndGgnCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1sZW5ndGguaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD11
dGYtOD4KKzx0aXRsZT5Dcm9zcy1vcmlnaW4gbWV0aG9kcyBhbmQgYWNjZXNzb3JzIGFyZSBjcmVh
dGVkIHdpdGggY29ycmVjdCAnbGVuZ3RoJyBwcm9wZXJ0eTwvdGl0bGU+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJz
Lmh0bWwjY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKSI+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9
bG9nPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3coKTsKKyAg
ICBmb3IgKGNvbnN0IHtrZXksIGxlbmd0aH0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzKSB7
CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLmxlbmd0aCwgbGVuZ3RoLCBgdy4ke2tleX0g
dmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxl
bmd0aCwgbGVuZ3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0K
K30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNy
b3NzT3JpZ2luV2luZG93KCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldp
bmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxl
bmd0aCwgMCwgYHcuJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCBgdy4ke2tleX1g
KTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBo
YXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3coKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHcubG9jYXRpb24ucmVwbGFjZS5sZW5ndGgsIDEpOworICAgIGNvbnN0IGRlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBsYWNlIik7CisgICAg
YXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgMSk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5X
aW5kb3coKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3Ro
LCAxKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVj
dCAnbGVuZ3RoJyIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVj
dHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1v
cmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmln
aW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdp
biBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9z
cy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbmFtZScKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2Rz
IGFuZCBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBjb3JyZWN0ICduYW1lJyBwcm9wZXJ0eTwv
dGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBl
ci0oLW8sLXAtKSI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jv
c3NPcmlnaW5XaW5kb3coKTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2lu
ZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XS5uYW1lLCBrZXksIGB3
LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mu
dmFsdWUubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAg
IH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJyIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VD
cm9zc09yaWdpbldpbmRvdygpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5X
aW5kb3dBY2Nlc3NvcnMpIHsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdldC5u
YW1lLCBgZ2V0ICR7a2V5fWApOworICAgICAgICBpZiAoa2V5ID09PSAibG9jYXRpb24iKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lm5hbWUsIGBzZXQgJHtrZXl9YCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgaGF2ZSBj
b3JyZWN0ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qg
dyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdygpOworICAgIGFzc2VydF9lcXVhbHMody5s
b2NhdGlvbi5yZXBsYWNlLm5hbWUsICJyZXBsYWNlIik7CisgICAgY29uc3QgZGVzYyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgInJlcGxhY2UiKTsKK30sICJDcm9zcy1vcmln
aW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbmFtZSciKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmln
aW5XaW5kb3coKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFt
ZSwgInNldCBocmVmIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIg
aGFzIGNvcnJlY3QgJ25hbWUnIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422286</attachid>
            <date>2021-03-04 14:19:47 -0800</date>
            <delta_ts>2021-03-06 01:54:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210305001945.patch</filename>
            <type>text/plain</type>
            <size>51822</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDIxLTAzLTA0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9t
e0csU31ldHRlckZ1bmN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBub24tbnVsbCBmdW5jdGlvbiBwb2lu
dGVyLgorCisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlND
dXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Om5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGwpOiBEZWxldGVkLgorCiAyMDIxLTAzLTAzICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2Fu
dmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDkgKzQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3Rv
bUdldHRlckZ1bgogCiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyRnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwot
CiAgICAgR2V0VmFsdWVGdW5jIGdldHRlciA9IGN1c3RvbUdldHRlckZ1bmN0aW9uLT5nZXR0ZXIo
KTsKLSAgICBBU1NFUlQoZ2V0dGVyKTsKIAogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IGN1
c3RvbUdldHRlckZ1bmN0aW9uLT5kb21BdHRyaWJ1dGUoKSkgewogICAgICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKQpAQCAtNjIsNiArNjAs
NyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1CiAKIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
PiBkb21BdHRyaWJ1dGUpCiB7CisgICAgQVNTRVJUKGdldHRlcik7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21HZXR0ZXJGdW5jdGlv
bkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21HZXR0
ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgZG9tQXR0
cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihjdXN0b21TCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tU2V0dGVyRnVuY3Rp
b25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8SlNDdXN0b21TZXR0ZXJG
dW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigpOwotICAgIEFTU0VSVChz
ZXR0ZXIpOwogICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDks
NiArNDgsNyBAQCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1CiAKIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQogeworICAgIEFTU0VSVChzZXR0ZXIpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3Vz
dG9tU2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3Ry
aW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2V0dGVyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiAyNzM4ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDE0LDkgKzQxNCw0IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhW
TSYgdm0KICAgICB9CiB9CiAKLXRlbXBsYXRlPFJhd05hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uLCBpbnQgbGVuZ3RoPiBFbmNvZGVkSlNWYWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25H
ZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAorMjAyMS0wMy0wNCAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mt
b3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4
aWNhbCBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGb3IgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMsIFdpbmRvdyBh
bmQgTG9jYXRpb24gb2JqZWN0cyByZXR1cm4gZGlmZmVyZW50IEpTRnVuY3Rpb24KKyAgICAgICAg
aW5zdGFuY2VzIG9uIGV2ZXJ5IFtbR2V0XV0uIFRoZSBpbnRlbnQgd2FzIHRvIGVuc3VyZSBpc29s
YXRpb24gYnkgc3VwcGx5aW5nIGRpZmZlcmVudCBSZWFsbXMgd2l0aAorICAgICAgICBkaWZmZXJl
bnQgZnVuY3Rpb24gb2JqZWN0cy4gSG93ZXZlciwgdGhpcyBtYWtlcyBzdWJzZXF1ZW50IGxvb2t1
cHMgb2YgYSBjcm9zcy1vcmlnaW4gbWV0aG9kIC8gYWNjZXNzb3IKKyAgICAgICAgd2l0aGluIHRo
ZSBzYW1lIGNhbGxlZSBSZWFsbSBmYWlsIHJlZmVyZW5jZSBlcXVhbGl0eSB0ZXN0LCB3aGljaCBp
cyByYXRoZXIgY29uZnVzaW5nOgorCisgICAgICAgICAgICBgY3Jvc3NPcmlnaW5XaW5kb3cuZm9j
dXMgPT09IGNyb3NzT3JpZ2luV2luZG93LmZvY3VzIC8vID0+IGZhbHNlYAorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBbW0Nyb3NzT3JpZ2luUHJvcGVydHlEZXNjcmlwdG9yTWFwXV0s
IGZpeGluZyBmdW5jdGlvbiBpZGVudGl0eSB0byBiZSBjb25zaXN0ZW50CisgICAgICAgIGFuZCBh
bGlnbmluZyBXZWJLaXQgd2l0aCB0aGUgc3BlYyBbMV0sIEJsaW5rLCBhbmQgR2Vja28uIFdoaWxl
IHRoZSBzcGVjIGRlZmluZXMgdGhlIHNsb3Qgb24gYm90aCBXaW5kb3cKKyAgICAgICAgYW5kIExv
Y2F0aW9uLCB0aGlzIGNoYW5nZSBhZGRzIGNhY2hlIG1hcHMgb25seSB0byBKU0RPTUdsb2JhbE9i
amVjdCAodG8gYWNjb21tb2RhdGUgUmVtb3RlRE9NV2luZG93KQorICAgICAgICBiZWNhdXNlIGdl
bmVyYXRlZCBKU0xvY2F0aW9uIGNhbid0IGJlIGVhc2lseSBleHRlbmRlZC4KKworICAgICAgICBB
cyBhIGNhY2hlIG1hcCBrZXksIGEgcGFpciBvZiBsZXhpY2FsIGdsb2JhbCBvYmplY3QgYW5kIHJh
dyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQsIHdoaWNoIGd1YXJhbnRlZXMKKyAgICAgICAgY29y
cmVjdG5lc3MgZXZlbiBpZiBXaW5kb3cgYW5kIExvY2F0aW9uIHdvdWxkIGV4cG9zZSBjcm9zcy1v
cmlnaW4gcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZS4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
bW92ZXMgOSBjdXN0b20gZ2V0dGVycyBhbmQgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIGV4dGVu
ZGVkIGF0dHJpYnV0ZSBhcyBpdCdzIG5vdworICAgICAgICB1bnVzZWQsIG5vbi10cml2aWFsIHRv
IGdlbmVyYXRlLCBhbmQgY2FuIGJlIGVhc2lseSByZXBsYWNlZCB3aXRoIGBzdGF0aWNQcm9wSGFz
aFRhYmxlYCBsb29rdXAKKyAgICAgICAgaWYgbmVjZXNzYXJ5IChsaWtlIGl0J3MgZG9uZSBmb3Ig
YHNob3dNb2RhbERpYWxvZ2ApLgorCisgICAgICAgIEFsc28sIGZpeGVzIGNyb3NzLXJlYWxtIGBw
b3N0TWVzc2FnZS5sZW5ndGhgIHRvIGVxdWFsIDEgYXMgcGVyIFdlYklETC4KKworICAgICAgICBb
MV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNj
cm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pCisKKyAgICAgICAgVGVzdHM6
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy5o
dG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
LWZ1bmN0aW9uLWxlbmd0aC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xv
YmFsT2JqZWN0OjpnZXRDcm9zc09yaWdpbkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NR2xvYmFsT2JqZWN0OjpnZXRDcm9zc09yaWdpbkdldHRlclNldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dldE93
blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21t
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuaWRsOgorICAgICAg
ICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93Lmlk
bDoKKwogMjAyMS0wMy0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0lGQ10gSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlOb25Sb290
SW5saW5lQm94ZXMgc2hvdWxkIGNoZWNrIGlmIHRoZSBsaW5lIGhhcyBpbmxpbmUgYm94ZXMgYXQg
YWxsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDkgQEAK
ICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJl
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxl
ci5oPgpAQCAtNzUsNiArNzgsOCBAQCBKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmpl
Y3QoVk0mCiAgICAgLCBtX3dvcmxkKFdURk1vdmUod29ybGQpKQogICAgICwgbV93b3JsZElzTm9y
bWFsKG1fd29ybGQtPmlzTm9ybWFsKCkpCiAgICAgLCBtX2J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9u
cyh2bSkKKyAgICAsIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcCh2bSkKKyAgICAsIG1fY3Jvc3NP
cmlnaW5HZXR0ZXJTZXR0ZXJNYXAodm0pCiB7CiB9CiAKQEAgLTI5OCw2ICszMDMsMzEgQEAgdm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkTwogICAgICAgICBndWFyZGVkLT5j
bGVhcigpOwogfQogCitKU0Z1bmN0aW9uKiBKU0RPTUdsb2JhbE9iamVjdDo6Z2V0Q3Jvc3NPcmln
aW5GdW5jdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBDcm9zc09yaWdpbk1hcEtleSBrZXkgPSBzdGQ6Om1ha2VfcGFpcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBuYXRpdmVGdW5jdGlvbi5yYXdQb2ludGVyKCkpOworICAgIEpT
RnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXAuZ2V0KGtleSk7
CisgICAgaWYgKCFqc0Z1bmN0aW9uKSB7CisgICAgICAgIGpzRnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbik7CisgICAg
ICAgIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcC5zZXQoa2V5LCBqc0Z1bmN0aW9uKTsKKyAgICB9
CisgICAgcmV0dXJuIGpzRnVuY3Rpb247Cit9CisKK0dldHRlclNldHRlciogSlNET01HbG9iYWxP
YmplY3Q6OmdldENyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0
dGVyLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQoreworICAgIENyb3NzT3JpZ2luTWFwS2V5IGtleSA9
IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxHbG9iYWxPYmplY3QsIGdldHRlciA/IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldHRlcikgOiByZWludGVycHJldF9jYXN0PHZvaWQqPihzZXR0ZXIpKTsK
KyAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0
ZXJNYXAuZ2V0KGtleSk7CisgICAgaWYgKCFnZXR0ZXJTZXR0ZXIpIHsKKyAgICAgICAgYXV0byYg
dm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwKKyAgICAgICAgICAg
IGdldHRlciA/IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXIpIDogbnVsbHB0ciwKKyAgICAgICAgICAgIHNl
dHRlciA/IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzZXR0ZXIpIDogbnVsbHB0cik7CisgICAgICAgIG1fY3Jvc3NP
cmlnaW5HZXR0ZXJTZXR0ZXJNYXAuc2V0KGtleSwgZ2V0dGVyU2V0dGVyKTsKKyAgICB9CisgICAg
cmV0dXJuIGdldHRlclNldHRlcjsKK30KKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIC8vIGh0
dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlvL3NwZWMvd2ViLWFwaS9pbmRleC5odG1sI2NvbXBp
bGUtYS1wb3RlbnRpYWwtd2ViYXNzZW1ibHktcmVzcG9uc2UKIHN0YXRpYyBKU0M6OkpTUHJvbWlz
ZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIEpTQzo6V2FzbTo6Q29tcGlsZXJNb2Rl
IGNvbXBpbGVyTW9kZSwgSlNDOjpKU09iamVjdCogaW1wb3J0T2JqZWN0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
NzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElu
bGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTgzLDYgKzg0LDkgQEAgcHVibGljOgogCiAgICAgSlNDOjpKU1Byb3h5JiBwcm94
eSgpIGNvbnN0IHsgQVNTRVJUKG1fcHJveHkpOyByZXR1cm4gKm1fcHJveHkuZ2V0KCk7IH0KIAor
ICAgIEpTQzo6SlNGdW5jdGlvbiogZ2V0Q3Jvc3NPcmlnaW5GdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6TmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgSlNDOjpHZXR0ZXJTZXR0ZXIqIGdldENyb3NzT3JpZ2luR2V0dGVyU2V0
dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpHZXRWYWx1
ZUZ1bmMsIEpTQzo6UHV0VmFsdWVGdW5jKTsKKwogcHVibGljOgogICAgIH5KU0RPTUdsb2JhbE9i
amVjdCgpOwogCkBAIC0xMjQsNyArMTI4LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCdWls
dGluR2xvYmFscyhKU0M6OlZNJik7CiAgICAgZnJpZW5kIHZvaWQgSlNCdWlsdGluSW50ZXJuYWxG
dW5jdGlvbnM6OmluaXRpYWxpemUoSlNET01HbG9iYWxPYmplY3QmKTsKIAorICAgIHVzaW5nIENy
b3NzT3JpZ2luTWFwS2V5ID0gc3RkOjpwYWlyPEpTQzo6SlNHbG9iYWxPYmplY3QqLCB2b2lkKj47
CisKICAgICBKU0J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucyBtX2J1aWx0aW5JbnRlcm5hbEZ1bmN0
aW9uczsKKyAgICBKU0M6OldlYWtHQ01hcDxDcm9zc09yaWdpbk1hcEtleSwgSlNDOjpKU0Z1bmN0
aW9uPiBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXA7CisgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NP
cmlnaW5NYXBLZXksIEpTQzo6R2V0dGVyU2V0dGVyPiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVy
TWFwOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQ29uc3RydWN0b3JDbGFzcz4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlz
aW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIgKzQ4LDkgQEAKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0
ZXJTZXR0ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnRlcm5hbEZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTG9va3VwLmg+CkBAIC02Nyw1OCArNjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZSk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
Ymx1ck5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5v
bkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJ
bnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNo
aW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2Fj
aGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nKTsKICNpZiBFTkFCTEUoVVNFUl9NRVNT
QUdFX0hBTkRMRVJTKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5k
b3dfd2Via2l0KTsKICNlbmRpZgogCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
KQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVt
b3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyLCAwPihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0
dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5j
ZUZ1bmN0aW9uX2JsdXIsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9j
bG9zZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hp
bmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uX2Nsb3NlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNo
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVu
Y3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZSwgMD4oZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVy
SW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXMsIDA+KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkp
Ci17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewot
ICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsK
LSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2UsIDI+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgSlNET01XaW5kb3c6
OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0xNTcsNDUg
KzEwNiwzNCBAQCBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpCiAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0
eWhlbHBlci0oLW8sLXAtKQogCiAgICAgLy8gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2UgYWxs
b3cgYWNjZXNzIHRvIGNyb3NzLW9yaWdpbiAoRG9Ob3RDaGVja1NlY3VyaXR5IGluIElETCkuCi0g
ICAgLy8gQWx3YXlzIHByb3ZpZGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBvbiBhIGZyZXNoIHVu
Y2FjaGVkIGZ1bmN0aW9uIG9iamVjdC4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5O
YW1lcy5ibHVyUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01X
aW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1
ck5vbkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBi
dWlsdGluTmFtZXMuY2xvc2VQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBl
ID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9jbG9zZU5vbkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VO
b25DYWNoaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZvY3VzUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
d2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0lu
c3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uX2ZvY3VzTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBp
ZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1YmxpY05hbWUoKSkg
ewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNS
ZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyA6IGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcpOworICAgIGF1
dG8qIGNsYXNzSW5mbyA9IHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8gSlNS
ZW1vdGVET01XaW5kb3c6OmluZm8oKSA6IEpTRE9NV2luZG93OjppbmZvKCk7CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwg
cHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mb2N1c1B1YmxpY05hbWUoKQorICAgICAgICB8
fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmJsdXJQdWJsaWNOYW1lKCkKKyAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1YmxpY05hbWUoKSkg
eworICAgICAgICBhdXRvKiBlbnRyeSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+
ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0byoganNGdW5jdGlvbiA9IHRoaXNPYmpl
Y3QtPmdldENyb3NzT3JpZ2luRnVuY3Rpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpKTsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGpzRnVuY3Rpb24pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBXaGVuIGFjY2Vzc2luZyBjcm9zcy1vcmlnaW4ga25v
d24gV2luZG93IHByb3BlcnRpZXMsIHdlIGFsd2F5cyB1c2UgdGhlIG9yaWdpbmFsIHByb3BlcnR5
IGdldHRlciwKICAgICAvLyBldmVuIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcmVtb3ZlZCAvIHJlZGVm
aW5lZC4gQXMgb2YgZWFybHkgMjAxNiwgdGhpcyBtYXRjaGVzIEZpcmVmb3ggYW5kIENocm9tZSdz
CiAgICAgLy8gYmVoYXZpb3IuCi0gICAgYXV0byogY2xhc3NJbmZvID0gd2luZG93VHlwZSA9PSBE
T01XaW5kb3dUeXBlOjpSZW1vdGUgPyBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpIDogSlNET01X
aW5kb3c6OmluZm8oKTsKLSAgICBpZiAoYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1By
b3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgLy8gT25seSBhbGxv
dyBhY2Nlc3MgdG8gdGhlc2Ugc3BlY2lmaWMgcHJvcGVydGllcy4KLSAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkKLSAgICAgICAgICAg
IHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpCi0gICAg
ICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoCi0gICAg
ICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnNlbGZQdWJsaWNOYW1lKCkK
LSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMud2luZG93UHVibGlj
TmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZyYW1l
c1B1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1l
cy5vcGVuZXJQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWls
dGluTmFtZXMucGFyZW50UHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUg
PT0gYnVpbHRpbk5hbWVzLnRvcFB1YmxpY05hbWUoKSkgewotICAgICAgICAgICAgYXV0byogZ2V0
dGVyID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7Ci0gICAgICAgICAg
ICBhdXRvKiBzZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVi
bGljTmFtZSgpID8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSkgOiBudWxs
cHRyOwotICAgICAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7Ci0gICAgICAgICAg
ICBzbG90LnNldEdldHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09
IGJ1aWx0aW5OYW1lcy5zZWxmUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlO
YW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZWRQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVy
dHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aAorICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnRvcFB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gYnVpbHRpbk5hbWVzLm9wZW5lclB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKSkgeworICAgICAgICBh
dXRvKiBlbnRyeSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5O
YW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKSA/IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpIDogbnVs
bHB0cjsKKyAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gdGhpc09iamVjdC0+Z2V0Q3Jvc3NP
cmlnaW5HZXR0ZXJTZXR0ZXIoJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50
cnktPnByb3BlcnR5R2V0dGVyKCksIHNldHRlcik7CisgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIC8vIENoZWNrIGZvciBjaGlsZCBmcmFtZXMgYnkgbmFtZSBiZWZvcmUgYnVpbHQt
aW4gcHJvcGVydGllcyB0byBtYXRjaCBNb3ppbGxhLiBUaGlzIGRvZXMKQEAgLTI2NSw3ICsyMDMs
NyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgICAgIC8v
IERldGVjdCB3aGVuIHdlJ3JlIGdldHRpbmcgdGhlIHByb3BlcnR5ICdzaG93TW9kYWxEaWFsb2cn
LCB0aGlzIGlzIGRpc2FibGVkLCBhbmQgaGFzIGl0cyBvcmlnaW5hbCB2YWx1ZS4KICAgICAgICAg
Ym9vbCBpc1Nob3dNb2RhbERpYWxvZ0FuZFNob3VsZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5zaG93TW9kYWxEaWFsb2dQdWJsaWNOYW1lKCkKICAgICAg
ICAgICAgICYmICghZnJhbWUgfHwgIURPTVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nKCpmcmFt
ZSkpCi0gICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUoKSAmJiBpc0hvc3RGdW5jdGlvbihzbG90
LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSksIGpzRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9zaG93TW9kYWxEaWFsb2cpOworICAgICAgICAgICAgJiYgc2xvdC5p
c1ZhbHVlKCkgJiYgaXNIb3N0RnVuY3Rpb24oc2xvdC5nZXRWYWx1ZShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpLCBKU0RPTVdpbmRvdzo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRh
YmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5mdW5jdGlvbigpKTsKICAgICAgICAgLy8gVW5sZXNz
IHdlJ3JlIGluIHRoZSBzaG93TW9kYWxEaWFsb2cgc3BlY2lhbCBjYXNlLCB3ZSdyZSBkb25lLgog
ICAgICAgICBpZiAoIWlzU2hvd01vZGFsRGlhbG9nQW5kU2hvdWxkSGlkZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMSAr
MjksMTIgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvb2t1cC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0xvY2F0aW9uSW5zdGFuY2VGdW5jdGlvbl9yZXBsYWNl
Tm9uQ2FjaGluZyk7Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0xvY2F0aW9uSW5zdGFu
Y2VGdW5jdGlvbl9yZXBsYWNlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICBy
ZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0xvY2F0aW9uSW5zdGFu
Y2VGdW5jdGlvbl9yZXBsYWNlLCAxPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0K
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0xvY2F0aW9uJiB0aGlzT2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKTsKQEAgLTY0LDcgKzU1LDkgQEAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90Q29tbW9uKEpTTAogCiAgICAgLy8gV2Ugb25seSBhbGxvdyBhY2Nlc3MgdG8gTG9j
YXRpb24ucmVwbGFjZSgpIGNyb3NzIG9yaWdpbi4KICAgICBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPnJlcGxhY2UpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20oJnRoaXNP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBqc0xvY2F0aW9uSW5zdGFuY2VGdW5jdGlv
bl9yZXBsYWNlTm9uQ2FjaGluZyk7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gSlNMb2NhdGlvbjo6
aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBhdXRvKiBqc0Z1bmN0aW9uID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKS0+Z2V0Q3Jvc3NP
cmlnaW5GdW5jdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+
ZnVuY3Rpb24oKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCkpOworICAgICAgICBzbG90LnNldFZh
bHVlKCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0sIGpzRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKQEAgLTcyLDggKzY1LDcgQEAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29t
bW9uKEpTTAogICAgIC8vIGEgZGVzY3JpcHRvciB0aGF0IGhhcyBhIHNldHRlciBidXQgbm8gZ2V0
dGVyLgogICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
aHJlZlB1YmxpY05hbWUoKSkgewogICAgICAgICBhdXRvKiBlbnRyeSA9IEpTTG9jYXRpb246Omlu
Zm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKLSAgICAgICAg
YXV0byogc2V0dGVyID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7Ci0g
ICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgbnVsbHB0ciwgc2V0dGVyKTsKKyAgICAgICAgYXV0byogZ2V0dGVy
U2V0dGVyID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKS0+Z2V0Q3Jvc3NPcmlnaW5HZXR0ZXJT
ZXR0ZXIoJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbnVsbHB0ciwgZW50cnkt
PnByb3BlcnR5UHV0dGVyKCkpOwogICAgICAgICBzbG90LnNldEdldHRlclNsb3QoJnRoaXNPYmpl
Y3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwgZ2V0dGVyU2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDY2LDkgKzMwNjYsNiBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICBteSAkbnVtQ3VzdG9tT3BlcmF0aW9ucyA9IDA7CiAgICAg
bXkgJG51bUN1c3RvbUF0dHJpYnV0ZXMgPSAwOwogCi0gICAgbXkgJGhhc0ZvcndhcmREZWNsYXJp
bmdPcGVyYXRpb25zID0gMDsKLSAgICBteSAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMg
PSAwOwotCiAgICAgbXkgJGhhc0RPTUpJVEF0dHJpYnV0ZXMgPSAwOwogCiAgICAgIyBBdHRyaWJ1
dGUgYW5kIGZ1bmN0aW9uIGVudW1zCkBAIC0zMDg0LDggKzMwODEsNiBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAkaGFzRE9N
SklUQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9N
SklUfTsKLQotICAgICAgICAgICAgJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVzID0gMSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVy
fTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzE0NCw3ICszMTM5LDYgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAKICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0
aW9uc30pIHsKICAgICAgICAgJG51bUN1c3RvbU9wZXJhdGlvbnMrKyBpZiBIYXNDdXN0b21NZXRo
b2QoJG9wZXJhdGlvbik7Ci0gICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucyA9
IDEgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhl
YWRlcn07CiAgICAgfQogCiAgICAgaWYgKCRudW1DdXN0b21PcGVyYXRpb25zID4gMCkgewpAQCAt
MzI3MCw1MiArMzI2NCw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgR2VuZXJhdGVQcm90
b3R5cGVEZWNsYXJhdGlvbihcQGhlYWRlckNvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2Up
IGlmIEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAKLSAgICBp
ZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRpb25zKSB7Ci0gICAgICAgIG15ICRpbkFwcGxl
Q29weXJpZ2h0ID0gMDsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gRnVuY3Rpb25z
XG5cbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3Bl
cmF0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0
IHVubGVzcyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyfTsKLQotICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0FwcGxlQ29weXJpZ2h0fSkgewotICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5
cmlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGJlZ2lu
QXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7Ci0gICAgICAgICAgICAgICAgICAgICRpbkFw
cGxlQ29weXJpZ2h0ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICRlbmRBcHBsZUNvcHlyaWdodCk7Ci0gICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmln
aHQgPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxBdHRy
aWJ1dGUgPSBHZXRDb25kaXRpb25hbEZvck9wZXJhdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRv
cGVyYXRpb24pOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlv
bmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdG
cm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0cmlidXRlKSA6IHVuZGVmOwotICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdl
dEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKCR7
ZnVuY3Rpb25OYW1lfSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIj
ZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmln
aHQ7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIlxuIik7Ci0gICAgfQotCi0gICAgaWYg
KCRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRlcykgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCIvLyBBdHRyaWJ1dGVzXG5cbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNz
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9
OwotCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtc
biIpOwotICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAg
ICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoJHtzZXR0ZXJ9KTtcbiIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgIyBDaGVja0pTQ2Fz
dCBTbmlwcGV0IGZ1bmN0aW9uLgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntET01KSVR9KSB7CiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPEphdmFTY3JpcHRDb3Jl
L1NuaXBwZXQuaD4ifSA9IDE7CkBAIC00MzA3LDcgKzQyNTUsNiBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIp
OwogICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9u
c30pIHsKICAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYm
ICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0IGlmICRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9Owog
ICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsK
ICAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+bmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRv
cl0iOwogCkBAIC00MzUzLDcgKzQzMDAsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICB9CiAKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2Ut
PmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICAgICAgbmV4dCBp
ZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmcoJGF0dHJpYnV0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTIyMyw5ICsyMjMsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jRXhwb3NlZCIKICAgICAgICAgICAgIH0KICAgICAgICAg
fSwKLSAgICAgICAgIkZvcndhcmREZWNsYXJlSW5IZWFkZXIiOiB7Ci0gICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKICAg
ICAgICAgIkdlbmVyYXRlSXNSZWFjaGFibGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIiIsICJJbXBsIiwg
IkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiLCAiSW1wbENhbnZhc0Jhc2UiLCAiSW1wbERvY3Vt
ZW50IiwgIkltcGxFbGVtZW50Um9vdCIsICJJbXBsT3duZXJOb2RlUm9vdCIsICJJbXBsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCIsICJSZWFjaGFibGVGcm9tRE9NV2luZG93IiwgIlJlYWNoYWJsZUZy
b21OYXZpZ2F0b3IiXQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24g
MjczODg4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC02MiwxMSArNjIsMTEgQEAKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBCYXJQcm9wIHN0YXR1c2JhcjsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBCYXJQcm9wIHRvb2xiYXI7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0dXM7Ci0g
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndh
cmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBjbG9zZSgpOwotICAgIFtEb05vdENoZWNrU2Vj
dXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGNsb3NlZDsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnREb2N1
bWVudF0gdW5kZWZpbmVkIGNsb3NlKCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eV0gcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOwogICAgIHVuZGVmaW5lZCBzdG9wKCk7Ci0gICAg
W0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9jdXMoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5
LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgYmx1cigpOworICAgIFtEb05vdENo
ZWNrU2VjdXJpdHksIENhbGxXaXRoPUluY3VtYmVudFdpbmRvd10gdW5kZWZpbmVkIGZvY3VzKCk7
CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVkIGJsdXIoKTsKIAogICAgIC8vIG90
aGVyIGJyb3dzaW5nIGNvbnRleHRzCiAgICAgW1JlcGxhY2VhYmxlLCBEb05vdENoZWNrU2VjdXJp
dHlPbkdldHRlciwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
ZnJhbWVzOwpAQCAtOTEsOCArOTEsOCBAQAogICAgIERPTVN0cmluZz8gcHJvbXB0KG9wdGlvbmFs
IERPTVN0cmluZyBtZXNzYWdlID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyBkZWZhdWx0VmFsdWUg
PSAiIik7CiAgICAgdW5kZWZpbmVkIHByaW50KCk7CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRy
YW5zZmVyID0gW10pOwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93
LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhj
ZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFdpbmRv
d1Bvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2lu
LCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIE1heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFs
IFdpbmRvd1Bvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsKIAogCiAgICAgLy8gT2Jzb2xldGU6
IFN0aWxsIHBhcnQgb2YgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jV2luZG93LXBhcnRpYWwpLgpAQCAtMTE5LDcgKzExOSw3IEBACiAgICAgW05v
dEVudW1lcmFibGUsIENvbmRpdGlvbmFsPUlPU19HRVNUVVJFX0VWRU5UU10gYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmdlc3R1cmVzdGFydDsKIAogICAgIC8vIE5vbi1zdGFuZGFyZDogVGhpcyBo
YXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBhbmQgYnkgb3RoZXIg
YnJvd3NlcnMuCi0gICAgW0N1c3RvbSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gYW55IHNob3dN
b2RhbERpYWxvZyhET01TdHJpbmcgdXJsLCBvcHRpb25hbCBhbnkgZGlhbG9nQXJncywgb3B0aW9u
YWwgRE9NU3RyaW5nIGZlYXR1cmVBcmdzKTsKKyAgICBbQ3VzdG9tXSBhbnkgc2hvd01vZGFsRGlh
bG9nKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIGFueSBkaWFsb2dBcmdzLCBvcHRpb25hbCBET01T
dHJpbmcgZmVhdHVyZUFyZ3MpOwogCiAgICAgLy8gTm9uLXN0YW5kYXJkOiBzaG91bGQgcHJvYmFi
bHkgZGVwcmVjYXRlIHRoaXMgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTY1MykuCiAgICAgLy8gQmxpbmsgYWxyZWFkeSBkZXByZWNhdGVkIGl0IChodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00Mzc1NjkpLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAg
ICAgYXR0cmlidXRlIFNjcm9sbFJlc3RvcmF0aW9uIHNjcm9sbFJlc3RvcmF0aW9uOwogICAgIFtD
dXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgc3RhdGU7CiAKLSAgICBbQ2FsbFdpdGg9RG9j
dW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBiYWNrKCk7Ci0gICAgW0Nh
bGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9yd2Fy
ZCgpOwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5k
ZWZpbmVkIGdvKG9wdGlvbmFsIGxvbmcgZGVsdGEgPSAwKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1l
bnRdIHVuZGVmaW5lZCBiYWNrKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQg
Zm9yd2FyZCgpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGdvKG9wdGlvbmFs
IGxvbmcgZGVsdGEgPSAwKTsKIAogICAgIC8vIEZJWE1FOiB0aXRsZSBzaG91bGQgbm90IGJlIG51
bGxhYmxlIGFzIHBlciB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5kZWZpbmVkIHB1c2hTdGF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9N
U3RyaW5nPyB0aXRsZSwgb3B0aW9uYWwgVVNWU3RyaW5nPyB1cmwgPSBudWxsKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQAogXSBp
bnRlcmZhY2UgTG9jYXRpb24gewogICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmly
c3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1
dGUgVVNWU3RyaW5nIGhyZWY7CiAKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2lu
ZG93LCBNYXlUaHJvd0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVk
IGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKLSAgICBbQ2Fs
bFdpdGg9QWN0aXZlV2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcmVs
b2FkKCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dF
eGNlcHRpb25dIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7CisgICAgW0RvTm90Q2hl
Y2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRo
PUFjdGl2ZVdpbmRvd10gdW5kZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9z
aXRpb24gYXR0cmlidXRlcwogICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RX
aW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0
NiwxNCBAQAogICAgIFtMZWdhY3lVbmZvcmdlYWJsZSwgSW1wbGVtZW50ZWRBcz1zZWxmXSByZWFk
b25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgd2luZG93OwogICAgIFtSZXBsYWNlYWJsZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHNlbGY7CiAgICAgW1B1dEZvcndhcmRzPWhyZWYs
IExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9u
OyAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KLSAgICBbQ2FsbFdpdGg9SW5jdW1i
ZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBjbG9zZSgpOwot
ICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBj
bG9zZWQ7Ci0gICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhl
YWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7Ci0gICAgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVu
ZGVmaW5lZCBibHVyKCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmlu
ZWQgY2xvc2UoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CisgICAg
W0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10gdW5kZWZpbmVkIGZvY3VzKCk7CisgICAgdW5kZWZp
bmVkIGJsdXIoKTsKICAgICBbUmVwbGFjZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9u
bHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGZyYW1lczsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBbTGVnYWN5VW5mb3JnZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gdG9wOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVj
dCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2Vx
dWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
JkluY3VtYmVudFdpbmRvd10gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZT
dHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0g
W10pOwogfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTA0ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBDYWNoZSBjcm9zcy1v
cmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhp
Y2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Bl
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mt
c3dhcC13aW5kb3ctb3Blbi5odG1sOgorCiAyMDIxLTAzLTA0ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgTnVsbCBjaGVjayBwbGF0Zm9ybURhdGEgd2hlbiBkZWNvZGlu
ZwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13
aW5kb3ctb3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9j
ZXNzLXN3YXAtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCwxMSBAQCBQQVNTIHcuY2xvc2UgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KIFBBU1Mg
dy5mb2N1cyBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LmJsdXIgaXMgYW4gaW5z
dGFuY2Ugb2YgRnVuY3Rpb24KIFBBU1Mgdy5wb3N0TWVzc2FnZSBpcyBhbiBpbnN0YW5jZSBvZiBG
dW5jdGlvbgorUEFTUyB3LmNsb3NlIGlzIHcuY2xvc2UKK1BBU1Mgdy5mb2N1cyBpcyB3LmZvY3Vz
CitQQVNTIHcuYmx1ciBpcyB3LmJsdXIKK1BBU1Mgdy5wb3N0TWVzc2FnZSBpcyB3LnBvc3RNZXNz
YWdlCitQQVNTIHcucG9zdE1lc3NhZ2UubGVuZ3RoIGlzIDEKIFBBU1Mgdy5wb3N0TWVzc2FnZSgn
dGVzdCcsICcqJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHcuZm9jdXMoKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5ibHVyKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2Fw
LXdpbmRvdy1vcGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sCShyZXZpc2lvbiAyNzM4ODgp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRv
dy1vcGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDExIEBAIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CiAgICAgc2hvdWxkQmVUeXBlKCJ3LmZvY3VzIiwgIkZ1bmN0aW9uIik7CiAgICAg
c2hvdWxkQmVUeXBlKCJ3LmJsdXIiLCAiRnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVR5cGUoIncu
cG9zdE1lc3NhZ2UiLCAiRnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZSgidy5jbG9zZSIsICJ3LmNs
b3NlIik7CisgICAgc2hvdWxkQmUoIncuZm9jdXMiLCAidy5mb2N1cyIpOworICAgIHNob3VsZEJl
KCJ3LmJsdXIiLCAidy5ibHVyIik7CisgICAgc2hvdWxkQmUoIncucG9zdE1lc3NhZ2UiLCAidy5w
b3N0TWVzc2FnZSIpOworICAgIHNob3VsZEJlKCJ3LnBvc3RNZXNzYWdlLmxlbmd0aCIsICIxIik7
CiAgICAgc2hvdWxkTm90VGhyb3coIncucG9zdE1lc3NhZ2UoJ3Rlc3QnLCAnKicpIik7CiAgICAg
c2hvdWxkTm90VGhyb3coIncuZm9jdXMoKSIpOwogICAgIHNob3VsZE5vdFRocm93KCJ3LmJsdXIo
KSIpOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzM5MTgp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNz
b3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mt
b3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24u
anM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1s
ZW5ndGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9i
amVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbDogQWRkZWQuCisK
IDIwMjEtMDMtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgaW5pdGlhbCB2YWx1ZSBmb3IgYm9yZGVyLWltYWdlLW91dHNldCBzaG91bGQgYmUgMApJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmctZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRob2Rz
IGFyZSBjYWNoZWQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgYXJlIGNhY2hl
ZAorUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBpcyBjYWNoZWQK
K1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkCisKSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tY2FjaGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVj
dHMtZnVuY3Rpb24tY2FjaGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAK
KzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5Dcm9zcy1vcmln
aW4gbWV0aG9kcyBhbmQgYWNjZXNzb3JzIGFyZSBjYWNoZWQgcGVyIFJlYWxtIHZpYVtbQ3Jvc3NP
cmlnaW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwj
Y3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKSI+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1v
bi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwv
ZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9y
IChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh3W2tleV0sIHdba2V5XSwgYHcuJHtrZXl9IHZpYSBbW0dldF1dYCk7CisgICAg
ICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkp
OworICAgICAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS52YWx1ZSwgZGVzYzIudmFsdWUs
IGB3LiR7a2V5fSB2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dYCk7CisgICAgfQorfSwgIkNyb3NzLW9y
aWdpbiBXaW5kb3cgbWV0aG9kcyBhcmUgY2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAg
IGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dBY2Nlc3NvcnMpIHsKKyAgICAg
ICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7
CisgICAgICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLmdldCwgZGVzYzIuZ2V0LCBgdy4k
e2tleX0gZ2V0dGVyYCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuc2V0LCBkZXNjMi5zZXQsIGB3LiR7a2V5fSBzZXR0
ZXJgKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29y
cyBhcmUgY2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3
ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGFzc2VydF9lcXVhbHMody5s
b2NhdGlvbi5yZXBsYWNlLCB3LmxvY2F0aW9uLnJlcGxhY2UsICJ2aWEgW1tHZXRdXSIpOworICAg
IGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9u
LCAicmVwbGFjZSIpOworICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYzEu
dmFsdWUsIGRlc2MyLnZhbHVlLCAidmlhIFtbR2V0T3duUHJvcGVydHldXSIpOworfSwgIkNyb3Nz
LW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGlzIGNhY2hlZCIpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldp
bmRvdyh0KTsKKyAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iody5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGRlc2MxLnNldCwgZGVzYzIuc2V0KTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZg
IHNldHRlciBpcyBjYWNoZWQiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1jb21tb24uanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorInVzZSBzdHJpY3QiOworCitjb25zdCBjcm9zc09y
aWdpbldpbmRvd01ldGhvZHMgPSBbCisgICAge2tleTogImNsb3NlIiwgbGVuZ3RoOiAwfSwKKyAg
ICB7a2V5OiAiZm9jdXMiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6ICJibHVyIiwgbGVuZ3RoOiAw
fSwKKyAgICB7a2V5OiAicG9zdE1lc3NhZ2UiLCBsZW5ndGg6IDF9LAorXTsKKworY29uc3QgY3Jv
c3NPcmlnaW5XaW5kb3dBY2Nlc3NvcnMgPSBbCisgICAgIndpbmRvdyIsCisgICAgInNlbGYiLAor
ICAgICJsb2NhdGlvbiIsCisgICAgImNsb3NlZCIsCisgICAgImZyYW1lcyIsCisgICAgImxlbmd0
aCIsCisgICAgInRvcCIsCisgICAgIm9wZW5lciIsCisgICAgInBhcmVudCIsCitdLm1hcChrZXkg
PT4gKHtrZXl9KSk7CisKK2NvbnN0IG1ha2VDcm9zc09yaWdpbldpbmRvdyA9IHQgPT4geworICAg
IGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4geyBpZnJhbWUucmVtb3ZlKCk7IH0pOworCisgICAgY29uc3QgcGF0
aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnNsaWNlKDAsIGxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRl
eE9mKCIvIikpICsgIi9mcmFtZS5odG1sIjsKKyAgICBpZnJhbWUuc3JjID0gZ2V0X2hvc3RfaW5m
bygpLkhUVFBfUkVNT1RFX09SSUdJTiArIHBhdGg7CisKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyBy
ZXNvbHZlKGlmcmFtZS5jb250ZW50V2luZG93KTsgfTsKKyAgICAgICAgaWZyYW1lLm9uZXJyb3Ig
PSByZWplY3Q7CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICB9
KTsKK307CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdp
bi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5n
dGgtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93
IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cg
YWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRp
b24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmln
aW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbGVuZ3RoJworCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMv
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhv
ZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ2xlbmd0aCcgcHJvcGVy
dHk8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHlo
ZWxwZXItKC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1v
bi5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFr
ZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleSwgbGVuZ3RofSBvZiBj
cm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3W2tleV0u
bGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBk
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tH
ZXRPd25Qcm9wZXJ0eV1dYCk7CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9k
cyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChj
b25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25z
dCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwgMCwgYHcuJHtrZXl9YCk7CisgICAgICAg
IGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVz
Yy5zZXQubGVuZ3RoLCAxLCBgdy4ke2tleX1gKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9z
cy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmln
aW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubGVuZ3Ro
LCAxKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5n
dGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBj
b3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25z
dCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGNvbnN0IGRlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAg
YXNzZXJ0X2VxdWFscyhkZXNjLnNldC5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tbmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9y
aWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNiBAQAorCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNv
cnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29y
cmVjdCAnbmFtZScKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2Qg
aGFzIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0
dGVyIGhhcyBjb3JyZWN0ICduYW1lJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLW5hbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3
aXRoIGNvcnJlY3QgJ25hbWUnIHByb3BlcnR5PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNj
cm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9u
L2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9k
aXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3Ig
KGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcykgeworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHdba2V5XS5uYW1lLCBrZXksIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAg
ICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwga2V5LCBgdy4ke2tleX0g
dmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93
IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBm
b3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3JzKSB7CisgICAgICAg
IGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubmFtZSwgYGdldCAke2tleX1gKTsKKyAgICAg
ICAgaWYgKGtleSA9PT0gImxvY2F0aW9uIikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNjLnNldC5uYW1lLCBgc2V0ICR7a2V5fWApOworICAgICAgICB9CisgICAgfQorfSwgIkNyb3Nz
LW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5X
aW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubmFtZSwgInJl
cGxhY2UiKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5u
YW1lLCAicmVwbGFjZSIpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0
aG9kIGhhcyBjb3JyZWN0ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBk
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIp
OworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFtZSwgInNldCBocmVmIik7Cit9LCAiQ3Jv
c3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJlY3QgJ25hbWUnIik7Cis8
L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422478</attachid>
            <date>2021-03-06 01:55:03 -0800</date>
            <delta_ts>2021-03-06 05:57:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210306115501.patch</filename>
            <type>text/plain</type>
            <size>56133</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDIxLTAzLTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDEuIEFkZCBXZWFrR0NNYXA6OmVuc3VyZSgpIHRv
IGF2b2lkIGRvdWJsZSBoYXNoaW5nIGFuZCBjbGVhbiB1cCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCkuCisgICAgICAgIDIuIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dl
dHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMgY3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBv
aW50ZXIuCisgICAgICAgIDMuIFJlbmFtZSBnZXRDdXN0b217R2V0dGVyLFNldHRlcn1GdW5jdGlv
bigpIHRvIGFsaWduIHdpdGggbmV3bHktYWRkZWQgSlNET01HbG9iYWxPYmplY3QgbWV0aG9kcy4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVy
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmdldEN1c3RvbVNldHRlckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorCiAyMDIxLTAzLTAz
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8g
YmUgY3JlYXRlZCBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjcz
ODg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGN1c3RvbUdldHRlckZ1bgogCiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiog
Y3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwotCiAgICAgR2V0VmFsdWVGdW5jIGdldHRlciA9IGN1c3RvbUdldHRlckZ1
bmN0aW9uLT5nZXR0ZXIoKTsKLSAgICBBU1NFUlQoZ2V0dGVyKTsKIAogICAgIGlmIChhdXRvIGRv
bUF0dHJpYnV0ZSA9IGN1c3RvbUdldHRlckZ1bmN0aW9uLT5kb21BdHRyaWJ1dGUoKSkgewogICAg
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8p
KQpAQCAtNjIsNiArNjAsNyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRl
ckZ1CiAKIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRy
aWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCiB7CisgICAgQVNTRVJUKGdldHRlcik7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0
b21HZXR0ZXJGdW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJp
bmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGdldHRlciwgZG9tQXR0cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAy
NzM4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihjdXN0b21TCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3Vz
dG9tU2V0dGVyRnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigp
OwotICAgIEFTU0VSVChzZXR0ZXIpOwogICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQpAQCAtNDksNiArNDgsNyBAQCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3Rv
bVNldHRlckZ1CiAKIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQogeworICAgIEFT
U0VSVChzZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRI
b3N0RnVuY3Rpb24oY3VzdG9tU2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXND
b25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1
Y3R1cmUoKTsKICAgICBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1
c3RvbVNldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyMSwyNCArMzUyMSwxOCBAQCBCdXR0
ZXJmbHkqIEpTT2JqZWN0OjphbGxvY2F0ZU1vcmVPdXRPZkxpCiAgICAgcmV0dXJuIEJ1dHRlcmZs
eTo6Y3JlYXRlT3JHcm93UHJvcGVydHlTdG9yYWdlKGJ1dHRlcmZseSgpLCB2bSwgdGhpcywgc3Ry
dWN0dXJlKHZtKSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CiB9CiAKLXN0YXRpYyBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uKiBnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWVG
dW5jLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCitzdGF0
aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3JlYXRlQ3VzdG9tR2V0dGVyRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0
VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4g
ZG9tQXR0cmlidXRlKQogewotICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRl
ckZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgpLmdldChn
ZXRWYWx1ZUZ1bmMpOwotICAgIGlmICghY3VzdG9tR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAg
Y3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5j
LCBkb21BdHRyaWJ1dGUpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0
aW9uTWFwKCkuc2V0KGdldFZhbHVlRnVuYywgY3VzdG9tR2V0dGVyRnVuY3Rpb24pOwotICAgIH0K
LSAgICByZXR1cm4gY3VzdG9tR2V0dGVyRnVuY3Rpb247CisgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5lbnN1cmUoZ2V0VmFsdWVGdW5jLCBbJl0gewor
ICAgICAgICByZXR1cm4gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFZhbHVlRnVuYywgZG9tQXR0
cmlidXRlKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLXN0YXRpYyBKU0N1
c3RvbVNldHRlckZ1bmN0aW9uKiBnZXRDdXN0b21TZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMg
cHV0VmFsdWVGdW5jKQorc3RhdGljIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3Rv
bVNldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZUZ1bmMpCiB7Ci0gICAgSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbiogY3VzdG9tU2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmN1
c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KHB1dFZhbHVlRnVuYyk7Ci0gICAgaWYgKCFjdXN0
b21TZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9IEpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBwdXRWYWx1ZUZ1bmMpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmN1
c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuc2V0KHB1dFZhbHVlRnVuYywgY3VzdG9tU2V0dGVyRnVu
Y3Rpb24pOwotICAgIH0KLSAgICByZXR1cm4gY3VzdG9tU2V0dGVyRnVuY3Rpb247CisgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25NYXAoKS5lbnN1cmUocHV0VmFs
dWVGdW5jLCBbJl0geworICAgICAgICByZXR1cm4gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHB1dFZh
bHVlRnVuYyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCiBib29sIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQpAQCAtMzU1OSw5ICszNTUzLDkgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcigoc2xv
dC5hdHRyaWJ1dGVzKCkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpICYgflByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBzbG90
QmFzZUdsb2JhbE9iamVjdCA9IHNsb3Quc2xvdEJhc2UoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAg
ICAgICAgaWYgKHNsb3QuY3VzdG9tR2V0dGVyKCkpCi0gICAgICAgICAgICBkZXNjcmlwdG9yLnNl
dEdldHRlcihnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigpLCBzbG90LmRvbUF0dHJpYnV0ZSgpKSk7Cisg
ICAgICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihjcmVhdGVDdXN0b21HZXR0ZXJGdW5jdGlv
bihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigp
LCBzbG90LmRvbUF0dHJpYnV0ZSgpKSk7CiAgICAgICAgIGlmIChzbG90LmN1c3RvbVNldHRlcigp
KQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rp
b24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21TZXR0ZXIo
KSkpOworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoY3JlYXRlQ3VzdG9tU2V0dGVy
RnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21T
ZXR0ZXIoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsOSArNDE0LDQgQEAgaW5saW5lIHZv
aWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bQogICAgIH0KIH0KIAotdGVtcGxhdGU8UmF3
TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEVuY29kZWRKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9i
amVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgV1RGTW92ZSh2YWx1ZSkp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgQWRkUmVzdWx0
IGVuc3VyZShjb25zdCBLZXlUeXBlJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbWFwLmVuc3VyZShrZXksIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSk7CisgICAgfQorCiAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fbWFwLnJlbW92ZShrZXkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDMtMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxl
c2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNj
ZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRm9yIGNyb3NzLW9y
aWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzLCBXaW5kb3cgYW5kIExvY2F0aW9uIG9iamVjdHMgcmV0
dXJuIGRpZmZlcmVudCBKU0Z1bmN0aW9uCisgICAgICAgIGluc3RhbmNlcyBvbiBldmVyeSBbW0dl
dF1dLiBUaGUgaW50ZW50IHdhcyB0byBlbnN1cmUgaXNvbGF0aW9uIGJ5IHN1cHBseWluZyBkaWZm
ZXJlbnQgUmVhbG1zIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IGZ1bmN0aW9uIG9iamVjdHMuIEhv
d2V2ZXIsIHdpdGhpbiB0aGUgc2FtZSBjYWxsZWUgUmVhbG0sIHRoaXMgbWFrZXMgc3Vic2VxdWVu
dCBsb29rdXBzCisgICAgICAgIG9mIGEgY3Jvc3Mtb3JpZ2luIG1ldGhvZCAvIGFjY2Vzc29yIGZh
aWwgcmVmZXJlbmNlIGVxdWFsaXR5IHRlc3QsIHdoaWNoIGlzIHJhdGhlciBjb25mdXNpbmc6CisK
KyAgICAgICAgICAgIGBjcm9zc09yaWdpbldpbmRvdy5mb2N1cyA9PT0gY3Jvc3NPcmlnaW5XaW5k
b3cuZm9jdXMgLy8gPT4gZmFsc2VgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFtb
Q3Jvc3NPcmlnaW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXSwgYnJpbmdpbmcgY29uc2lzdGVudCBm
dW5jdGlvbiBpZGVudGl0eQorICAgICAgICBhbmQgYWxpZ25pbmcgV2ViS2l0IHdpdGggdGhlIHNw
ZWMgWzFdLCBCbGluaywgYW5kIEdlY2tvLiBGb3IgY29udmVuaWVuY2UsIGNhY2hlIG1hcHMgYXJl
IGFkZGVkIHRvCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0ICh0byBhY2NvbW1vZGF0ZSBSZW1v
dGVET01XaW5kb3cpIGFuZCBjb3ZlciBib3RoIFdpbmRvdyBhbmQgTG9jYXRpb24gb2JqZWN0cy4K
KworICAgICAgICBBcyBhIGNhY2hlIG1hcCBrZXksIGEgcGFpciBvZiBsZXhpY2FsIGdsb2JhbCBv
YmplY3QgYW5kIHJhdyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQsIHdoaWNoIGd1YXJhbnRlZXMK
KyAgICAgICAgY29ycmVjdG5lc3MgZXZlbiBpZiBXaW5kb3cgYW5kIExvY2F0aW9uIHdvdWxkIGV4
cG9zZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZS4KKworICAgICAgICBU
aGlzIHBhdGNoIHJlbW92ZXMgOSBjdXN0b20gZ2V0dGVycywgYWRkcyBydW50aW1lIGxvb2t1cCBm
b3IgInNob3dNb2RhbERpYWxvZyIgKHdoaWNoIGlzIHJhcmUpLAorICAgICAgICBhbmQgcmVtb3Zl
cyBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gZXh0ZW5kZWQgYXR0cmlidXRlIGFzIGl0J3Mgbm93
IHVudXNlZCBhbmQgbm9uLXRyaXZpYWwgdG8gZ2VuZXJhdGUuCisKKyAgICAgICAgQWxzbywgZml4
ZXMgY3Jvc3MtcmVhbG0gYHBvc3RNZXNzYWdlLmxlbmd0aGAgdG8gZXF1YWwgMSBhcyBwZXIgV2Vi
SURMLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkK
KworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1m
dW5jdGlvbi1jYWNoaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luR2V0
dGVyU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb246CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBh
Z2UvSGlzdG9yeS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICog
cGFnZS9SZW1vdGVET01XaW5kb3cuaWRsOgorCiAyMDIxLTAzLTA0ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVDb250ZW50QnVpbGRl
cjo6Y3JlYXRlRGlzcGxheU5vblJvb3RJbmxpbmVCb3hlcyBzaG91bGQgY2hlY2sgaWYgdGhlIGxp
bmUgaGFzIGlubGluZSBib3hlcyBhdCBhbGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOSBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvZGVCbG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNl
dHRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+CkBAIC03NSw2ICs3OCw4IEBAIEpTRE9NR2xvYmFs
T2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChWTSYKICAgICAsIG1fd29ybGQoV1RGTW92ZSh3b3Js
ZCkpCiAgICAgLCBtX3dvcmxkSXNOb3JtYWwobV93b3JsZC0+aXNOb3JtYWwoKSkKICAgICAsIG1f
YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkZ1bmN0aW9u
TWFwKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcCh2bSkKIHsKIH0KIApA
QCAtMjk4LDYgKzMwMywyNiBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJk
ZWRPCiAgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRE9NR2xv
YmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVGdW5jdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIENyb3NzT3JpZ2luTWFw
S2V5IGtleSA9IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxHbG9iYWxPYmplY3QsIG5hdGl2ZUZ1bmN0
aW9uLnJhd1BvaW50ZXIoKSk7CisgICAgcmV0dXJuIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcC5l
bnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCksIGxleGljYWxHbG9iYWxPYmplY3QsIGxlbmd0aCwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKK30KKworR2V0dGVyU2V0dGVyKiBKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRl
Q3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIFB1dFZh
bHVlRnVuYyBzZXR0ZXIpCit7CisgICAgQVNTRVJUKGdldHRlciB8fCBzZXR0ZXIpOworICAgIENy
b3NzT3JpZ2luTWFwS2V5IGtleSA9IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdldHRlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldHRlcikgOiByZWludGVycHJldF9j
YXN0PHZvaWQqPihzZXR0ZXIpKTsKKyAgICByZXR1cm4gbV9jcm9zc09yaWdpbkdldHRlclNldHRl
ck1hcC5lbnN1cmUoa2V5LCBbJl0geworICAgICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgICAgIHJldHVybiBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIGdldHRlciA/IEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXIpIDogbnVsbHB0ciwKKyAgICAgICAgICAgIHNldHRlciA/IEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzZXR0ZXIp
IDogbnVsbHB0cik7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogLy8gaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIuaW8vc3BlYy93
ZWItYXBpL2luZGV4Lmh0bWwjY29tcGlsZS1hLXBvdGVudGlhbC13ZWJhc3NlbWJseS1yZXNwb25z
ZQogc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHNvdXJjZSwg
SlNDOjpXYXNtOjpDb21waWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0M6OkpTT2JqZWN0KiBpbXBv
cnRPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0xvY2tEdXJpbmdNYXJraW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODMsNiArODQsOSBAQCBwdWJsaWM6CiAK
ICAgICBKU0M6OkpTUHJveHkmIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVy
biAqbV9wcm94eS5nZXQoKTsgfQogCisgICAgSlNDOjpKU0Z1bmN0aW9uKiBjcmVhdGVDcm9zc09y
aWdpbkZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpOYXRpdmVGdW5jdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU0M6OkdldHRlclNldHRl
ciogY3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkdldFZhbHVlRnVuYywgSlNDOjpQdXRWYWx1ZUZ1bmMpOwor
CiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CiAKQEAgLTEyNCw3ICsxMjgsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZEJ1aWx0aW5HbG9iYWxzKEpTQzo6Vk0mKTsKICAgICBm
cmllbmQgdm9pZCBKU0J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9uczo6aW5pdGlhbGl6ZShKU0RPTUds
b2JhbE9iamVjdCYpOwogCisgICAgdXNpbmcgQ3Jvc3NPcmlnaW5NYXBLZXkgPSBzdGQ6OnBhaXI8
SlNDOjpKU0dsb2JhbE9iamVjdCosIHZvaWQqPjsKKwogICAgIEpTQnVpbHRpbkludGVybmFsRnVu
Y3Rpb25zIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOworICAgIEpTQzo6V2Vha0dDTWFwPENy
b3NzT3JpZ2luTWFwS2V5LCBKU0M6OkpTRnVuY3Rpb24+IG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1h
cDsKKyAgICBKU0M6OldlYWtHQ01hcDxDcm9zc09yaWdpbk1hcEtleSwgSlNDOjpHZXR0ZXJTZXR0
ZXI+IG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXJNYXA7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBD
b25zdHJ1Y3RvckNsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCwxMiArNDgsOSBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVy
bmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNN
aWNyb3Rhc2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KQEAgLTY3LDU4
ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rp
b25fb3BlbkRhdGFiYXNlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVt
b3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5v
bkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNo
aW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNh
Y2hpbmcpOwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd193ZWJraXQpOwogI2VuZGlmCiAKLUpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1
ck5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdT
dGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2JsdXIsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9u
R2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ciwgMD4oZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1v
dGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxq
c1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2UsIDA+KGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0g
ICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJ
bnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19
Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fZm9jdXNOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBu
b25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9mb2N1cywgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1K
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3Vz
Tm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXMs
IDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNh
Y2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RN
ZXNzYWdlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25D
YWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2Fn
ZSwgMj4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgogdm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oVmlz
aXRvciYgdmlzaXRvcikKIHsKQEAgLTE1Nyw0NSArMTA2LDM0IEBAIGJvb2wganNET01XaW5kb3dH
ZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pCiAKICAgICAvLyBU
aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3ZSBhbGxvdyBhY2Nlc3MgdG8gY3Jvc3Mtb3JpZ2luIChE
b05vdENoZWNrU2VjdXJpdHkgaW4gSURMKS4KLSAgICAvLyBBbHdheXMgcHJvdmlkZSB0aGUgb3Jp
Z2luYWwgZnVuY3Rpb24sIG9uIGEgZnJlc2ggdW5jYWNoZWQgZnVuY3Rpb24gb2JqZWN0LgotICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmJsdXJQdWJsaWNOYW1lKCkpIHsKLSAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVtb3Rl
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZVB1YmxpY05hbWUo
KSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8g
anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyA6IGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZm9jdXNQ
dWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6
OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hp
bmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9
PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rp
b25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bv
c3RNZXNzYWdlTm9uQ2FjaGluZyk7CisgICAgYXV0byogY2xhc3NJbmZvID0gd2luZG93VHlwZSA9
PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpIDogSlNE
T01XaW5kb3c6OmluZm8oKTsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5j
bG9zZVB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LmZvY3VzUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFt
ZXMuYmx1clB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gY2xh
c3NJbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBhdXRvKiBqc0Z1bmN0aW9uID0gdGhpc09iamVjdC0+Y3JlYXRlQ3Jvc3NPcmlnaW5GdW5jdGlv
bigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSwg
ZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwganNGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IFdoZW4gYWNjZXNzaW5nIGNyb3NzLW9yaWdpbiBrbm93biBXaW5kb3cgcHJvcGVydGllcywgd2Ug
YWx3YXlzIHVzZSB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZ2V0dGVyLAogICAgIC8vIGV2ZW4gaWYg
dGhlIHByb3BlcnR5IHdhcyByZW1vdmVkIC8gcmVkZWZpbmVkLiBBcyBvZiBlYXJseSAyMDE2LCB0
aGlzIG1hdGNoZXMgRmlyZWZveCBhbmQgQ2hyb21lJ3MKICAgICAvLyBiZWhhdmlvci4KLSAgICBh
dXRvKiBjbGFzc0luZm8gPSB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IEpT
UmVtb3RlRE9NV2luZG93OjppbmZvKCkgOiBKU0RPTVdpbmRvdzo6aW5mbygpOwotICAgIGlmIChh
dXRvKiBlbnRyeSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKSkgewotICAgICAgICAvLyBPbmx5IGFsbG93IGFjY2VzcyB0byB0aGVzZSBzcGVjaWZp
YyBwcm9wZXJ0aWVzLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5s
b2NhdGlvblB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5jbG9zZWRQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSBidWlsdGluTmFtZXMuc2VsZlB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlO
YW1lID09IGJ1aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZnJhbWVzUHVibGljTmFtZSgpCi0gICAgICAgICAg
ICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLm9wZW5lclB1YmxpY05hbWUoKQotICAg
ICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1l
KCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9wUHVibGlj
TmFtZSgpKSB7Ci0gICAgICAgICAgICBhdXRvKiBnZXR0ZXIgPSBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5wcm9wZXJ0eUdldHRlcigpKTsKLSAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHByb3BlcnR5
TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBhdXRvKiBn
ZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGdldHRlciwgc2V0dGVyKTsKLSAgICAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlz
T2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0sIGdldHRlclNldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLndpbmRvd1B1YmxpY05h
bWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnNlbGZQdWJsaWNO
YW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1
YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3Nl
ZFB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZy
YW1lc1B1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9w
UHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMub3Bl
bmVyUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMu
cGFyZW50UHVibGljTmFtZSgpKSB7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gY2xhc3NJbmZvLT5z
dGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvKiBz
ZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgp
ID8gZW50cnktPnByb3BlcnR5UHV0dGVyKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiBnZXR0
ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5jcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwg
c2V0dGVyKTsKKyAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgZ2V0dGVy
U2V0dGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9y
IGNoaWxkIGZyYW1lcyBieSBuYW1lIGJlZm9yZSBidWlsdC1pbiBwcm9wZXJ0aWVzIHRvIG1hdGNo
IE1vemlsbGEuIFRoaXMgZG9lcwpAQCAtMjY1LDcgKzIwMyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICAgICAgLy8gRGV0ZWN0IHdoZW4gd2UncmUgZ2V0
dGluZyB0aGUgcHJvcGVydHkgJ3Nob3dNb2RhbERpYWxvZycsIHRoaXMgaXMgZGlzYWJsZWQsIGFu
ZCBoYXMgaXRzIG9yaWdpbmFsIHZhbHVlLgogICAgICAgICBib29sIGlzU2hvd01vZGFsRGlhbG9n
QW5kU2hvdWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LnNob3dNb2RhbERpYWxvZ1B1YmxpY05hbWUoKQogICAgICAgICAgICAgJiYgKCFmcmFtZSB8fCAh
RE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZyYW1lKSkKLSAgICAgICAgICAgICYmIHNs
b3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9uKHNsb3QuZ2V0VmFsdWUobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Nob3dN
b2RhbERpYWxvZyk7CisgICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUoKSAmJiBpc0hvc3RGdW5j
dGlvbihzbG90LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSksIEpT
RE9NV2luZG93OjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFt
ZSktPmZ1bmN0aW9uKCkpOwogICAgICAgICAvLyBVbmxlc3Mgd2UncmUgaW4gdGhlIHNob3dNb2Rh
bERpYWxvZyBzcGVjaWFsIGNhc2UsIHdlJ3JlIGRvbmUuCiAgICAgICAgIGlmICghaXNTaG93TW9k
YWxEaWFsb2dBbmRTaG91bGRIaWRlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIxICsyOSwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dldHRlclNldHRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9va3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsKLQotSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25D
YWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXJJbXBsPGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2UsIDE+
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQogc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90Q29tbW9uKEpTTG9jYXRpb24mIHRoaXNPYmplY3QsIEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwpAQCAt
NjQsNyArNTUsOSBAQCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAK
ICAgICAvLyBXZSBvbmx5IGFsbG93IGFjY2VzcyB0byBMb2NhdGlvbi5yZXBsYWNlKCkgY3Jvc3Mg
b3JpZ2luLgogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFj
ZSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSgmdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsK
KyAgICAgICAgYXV0byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNo
VGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIGpzRnVuY3Rpb24gPSB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+
ZnVuY3Rpb25MZW5ndGgoKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUoJnRoaXNPYmplY3QsIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwg
anNGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNzIsOCArNjUs
NyBAQCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAgICAgLy8gYSBk
ZXNjcmlwdG9yIHRoYXQgaGFzIGEgc2V0dGVyIGJ1dCBubyBnZXR0ZXIuCiAgICAgaWYgKHNsb3Qu
aW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5ICYmIHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ocmVmUHVibGljTmFtZSgpKSB7
CiAgICAgICAgIGF1dG8qIGVudHJ5ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFz
aFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwotICAgICAgICBhdXRvKiBzZXR0ZXIgPSBKU0N1
c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgYXV0byogZ2V0dGVy
U2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBu
dWxscHRyLCBzZXR0ZXIpOworICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpLT5jcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcigmbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIo
KSk7CiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0
ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjcz
ODg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMwNjYsOSArMzA2Niw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgIG15ICRudW1DdXN0b21PcGVyYXRpb25zID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0
cmlidXRlcyA9IDA7CiAKLSAgICBteSAkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAw
OwotICAgIG15ICRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRlcyA9IDA7Ci0KICAgICBteSAk
aGFzRE9NSklUQXR0cmlidXRlcyA9IDA7CiAKICAgICAjIEF0dHJpYnV0ZSBhbmQgZnVuY3Rpb24g
ZW51bXMKQEAgLTMwODQsOCArMzA4MSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICRoYXNET01KSVRBdHRyaWJ1dGVzID0g
MSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwotCi0gICAgICAg
ICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0zMTQ0LDcgKzMxMzksNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGZv
cmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAg
ICAkbnVtQ3VzdG9tT3BlcmF0aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKTsK
LSAgICAgICAgJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRpb25zID0gMSBpZiAkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICB9CiAK
ICAgICBpZiAoJG51bUN1c3RvbU9wZXJhdGlvbnMgPiAwKSB7CkBAIC0zMjcwLDUyICszMjY0LDYg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9u
KFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQ
cm90b3R5cGVEZWNsYXJhdGlvbigkaW50ZXJmYWNlKTsKIAotICAgIGlmICgkaGFzRm9yd2FyZERl
Y2xhcmluZ09wZXJhdGlvbnMpIHsKLSAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAg
IGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAg
ICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlv
bi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRvcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwotCi0gICAg
ICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmln
aHR9KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZv
ckhlYWRlckZpbGVzKTsKLSAgICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAx
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJp
Z2h0KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29w
eXJpZ2h0KTsKLSAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRp
dGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7Ci0gICAg
ICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1
ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7Ci0gICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIkpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oJHtmdW5jdGlvbk5hbWV9KTtc
biIpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwiXG4iKTsKLSAgICB9Ci0KLSAgICBpZiAoJGhhc0ZvcndhcmREZWNs
YXJpbmdBdHRyaWJ1dGVzKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEF0dHJp
YnV0ZXNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUigke2dldHRlcn0pO1xuIik7Ci0gICAgICAgICAg
ICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAjIENoZWNrSlNDYXN0IFNuaXBwZXQgZnVuY3Rp
b24uCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsK
ICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8SmF2YVNjcmlwdENvcmUvU25pcHBldC5oPiJ9ID0g
MTsKQEAgLTQzMDcsNyArNDI1NSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVh
Y2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAg
ICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292
ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0
IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgICAgICAgICAgbmV4
dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKQEAgLTQzNTMs
NyArNDMwMCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KIAogICAg
ICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsK
LSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9y
d2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5q
c29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIy
Myw2IEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNFeHBvc2VkIgogICAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiRm9y
d2FyZERlY2xhcmVJbkhlYWRlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAogICAgICAgICAiR2VuZXJhdGVJ
c1JlYWNoYWJsZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiIiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIsICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1l
bnRSb290IiwgIkltcGxPd25lck5vZGVSb290IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAiUmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2
MiwxMSBAQAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3Agc3Rh
dHVzYmFyOwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3AgdG9v
bGJhcjsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0YXR1czsKLSAgICBbRG9Ob3RDaGVja1Nl
Y3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRl
cl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERl
Y2xhcmVJbkhlYWRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtE
b05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQg
Y2xvc2UoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5XSByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBjbG9zZWQ7CiAgICAgdW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3Vy
aXR5LCBDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVu
ZGVmaW5lZCBmb2N1cygpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJl
SW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2Fs
bFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgZm9jdXMoKTsKKyAgICBbRG9Ob3RDaGVj
a1NlY3VyaXR5XSB1bmRlZmluZWQgYmx1cigpOwogCiAgICAgLy8gb3RoZXIgYnJvd3NpbmcgY29u
dGV4dHMKICAgICBbUmVwbGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0
b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CkBAIC05MSw4
ICs5MSw4IEBACiAgICAgRE9NU3RyaW5nPyBwcm9tcHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3Nh
Z2UgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRl
ZmluZWQgcHJpbnQoKTsKIAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2lu
ZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0
YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Ci0g
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1
cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRp
b25zIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93
LCBEb05vdENoZWNrU2VjdXJpdHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1l
c3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJ
bmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVu
ZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3Nh
Z2VPcHRpb25zIG9wdGlvbnMpOwogCiAKICAgICAvLyBPYnNvbGV0ZTogU3RpbGwgcGFydCBvZiB0
aGUgSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNXaW5k
b3ctcGFydGlhbCkuCkBAIC0xMTksNyArMTE5LDcgQEAKICAgICBbTm90RW51bWVyYWJsZSwgQ29u
ZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2Vz
dHVyZXN0YXJ0OwogCiAgICAgLy8gTm9uLXN0YW5kYXJkOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQg
ZnJvbSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIGFuZCBieSBvdGhlciBicm93c2Vycy4KLSAgICBb
Q3VzdG9tLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0
cmluZyB1cmwsIG9wdGlvbmFsIGFueSBkaWFsb2dBcmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVh
dHVyZUFyZ3MpOworICAgIFtDdXN0b21dIGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVy
bCwgb3B0aW9uYWwgYW55IGRpYWxvZ0FyZ3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJn
cyk7CiAKICAgICAvLyBOb24tc3RhbmRhcmQ6IHNob3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhp
cyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjUzKS4KICAgICAv
LyBCbGluayBhbHJlYWR5IGRlcHJlY2F0ZWQgaXQgKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcv
cC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQzNzU2OSkuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5pZGwJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICAgICBhdHRyaWJ1dGUgU2Ny
b2xsUmVzdG9yYXRpb24gc2Nyb2xsUmVzdG9yYXRpb247CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkg
YXR0cmlidXRlIGFueSBzdGF0ZTsKIAotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERl
Y2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJhY2soKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb3J3YXJkKCk7Ci0gICAgW0NhbGxX
aXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZ28ob3B0aW9u
YWwgbG9uZyBkZWx0YSA9IDApOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGJh
Y2soKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBmb3J3YXJkKCk7CisgICAg
W0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDAp
OwogCiAgICAgLy8gRklYTUU6IHRpdGxlIHNob3VsZCBub3QgYmUgbnVsbGFibGUgYXMgcGVyIHRo
ZSBIVE1MIHNwZWNpZmljYXRpb24uCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
cHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBv
cHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5pZGwJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5IEBACiBdIGludGVyZmFjZSBMb2NhdGlv
biB7CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RD
aGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJl
ZjsKIAotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhj
ZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmlu
ZyB1cmwpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVu
ZGVmaW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5k
b3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxs
V2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1
bmRlZmluZWQgcmVsb2FkKCk7CiAKICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVz
CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRl
IFVTVlN0cmluZyBwcm90b2NvbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9N
V2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdp
bmRvdy5pZGwJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3Rl
RE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgW0xl
Z2FjeVVuZm9yZ2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
aW5kb3dQcm94eSB3aW5kb3c7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgc2VsZjsKICAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFi
bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247IC8vIEZJWE1FOiBTaG91
bGQgbm90IGJlIG51bGxhYmxlLgotICAgIFtDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9y
d2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0ZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKLSAgICBbQ2Fs
bFdpdGg9SW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQg
Zm9jdXMoKTsKLSAgICBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsK
KyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKKyAgICBbQ2FsbFdpdGg9SW5jdW1i
ZW50V2luZG93XSB1bmRlZmluZWQgZm9jdXMoKTsKKyAgICB1bmRlZmluZWQgYmx1cigpOwogICAg
IFtSZXBsYWNlYWJsZSwgSW1wbGVtZW50ZWRBcz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2lu
ZG93UHJveHkgZnJhbWVzOwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBvcGVuZXI7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93
UHJveHk/IHBhcmVudDsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRv
dywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRy
YW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93
XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmln
aW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjczODg4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDMtMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8g
YWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0
bWw6CisKIDIwMjEtMDMtMDQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBOdWxsIGNoZWNrIHBsYXRmb3JtRGF0YSB3aGVuIGRlY29kaW5nCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJv
Y2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjczODg4KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Bl
bi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5j
bG9zZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3Rh
bmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcuYmx1ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgog
UEFTUyB3LnBvc3RNZXNzYWdlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xv
c2UgaXMgdy5jbG9zZQorUEFTUyB3LmZvY3VzIGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcu
Ymx1cgorUEFTUyB3LnBvc3RNZXNzYWdlIGlzIHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVz
c2FnZS5sZW5ndGggaXMgMQogUEFTUyB3LnBvc3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5mb2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgogUEFTUyB3LmJsdXIoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1z
d2FwLXdpbmRvdy1vcGVuLmh0bWwJKHJldmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBzaG91
bGRCZVR5cGUoIncuZm9jdXMiLCAiRnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVR5cGUoIncuYmx1
ciIsICJGdW5jdGlvbiIpOwogICAgIHNob3VsZEJlVHlwZSgidy5wb3N0TWVzc2FnZSIsICJGdW5j
dGlvbiIpOworICAgIHNob3VsZEJlKCJ3LmNsb3NlIiwgIncuY2xvc2UiKTsKKyAgICBzaG91bGRC
ZSgidy5mb2N1cyIsICJ3LmZvY3VzIik7CisgICAgc2hvdWxkQmUoIncuYmx1ciIsICJ3LmJsdXIi
KTsKKyAgICBzaG91bGRCZSgidy5wb3N0TWVzc2FnZSIsICJ3LnBvc3RNZXNzYWdlIik7CisgICAg
c2hvdWxkQmUoIncucG9zdE1lc3NhZ2UubGVuZ3RoIiwgIjEiKTsKICAgICBzaG91bGROb3RUaHJv
dygidy5wb3N0TWVzc2FnZSgndGVzdCcsICcqJykiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5m
b2N1cygpIik7CiAgICAgc2hvdWxkTm90VGhyb3coIncuYmx1cigpIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDAzMikKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wMy0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBM
b2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlv
bi1jYWNoaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9i
amVjdHMtZnVuY3Rpb24tbmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMy0wNSAgQ2hyaXMgTG9y
ZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWxsb3cgQ1NTIGZvbnQtc3R5bGluZyBm
b3IgY2FudmFzIHdpdGhvdXQgUmVuZGVyU3R5bGUKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLWNhY2hpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAor
CitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBhcmUgY2FjaGVkCitQQVNTIENyb3Nz
LW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGFyZSBjYWNoZWQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgaHJlZmAgc2V0dGVyIGlzIGNhY2hlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29y
cyBhcmUgY2FjaGVkIHBlciBSZWFsbSB2aWFbW0Nyb3NzT3JpZ2luUHJvcGVydHlEZXNjcmlwdG9y
TWFwXV08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVy
dHloZWxwZXItKC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0
cmljdCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQg
bWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NP
cmlnaW5XaW5kb3dNZXRob2RzKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLCB3W2tl
eV0sIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjMSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVzYzIg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZGVzYzEudmFsdWUsIGRlc2MyLnZhbHVlLCBgdy4ke2tleX0gdmlhIFtbR2V0T3du
UHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgYXJl
IGNhY2hlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3
YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNy
b3NzT3JpZ2luV2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBjb25zdCBkZXNjMiA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhkZXNjMS5nZXQsIGRlc2MyLmdldCwgYHcuJHtrZXl9IGdldHRlcmApOworICAgICAg
ICBpZiAoa2V5ID09PSAibG9jYXRpb24iKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
c2MxLnNldCwgZGVzYzIuc2V0LCBgdy4ke2tleX0gc2V0dGVyYCk7CisgICAgICAgIH0KKyAgICB9
Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgYXJlIGNhY2hlZCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdp
bldpbmRvdyh0KTsKKyAgICBhc3NlcnRfZXF1YWxzKHcubG9jYXRpb24ucmVwbGFjZSwgdy5sb2Nh
dGlvbi5yZXBsYWNlLCAidmlhIFtbR2V0XV0iKTsKKyAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBjb25z
dCBkZXNjMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJl
cGxhY2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwgInZp
YSBbW0dldE93blByb3BlcnR5XV0iKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxh
Y2VgIG1ldGhvZCBpcyBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3QgZGVz
YzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7
CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9j
YXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCk7
Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkIik7Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKyJ1c2Ugc3RyaWN0IjsKKworY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzID0gWwor
ICAgIHtrZXk6ICJjbG9zZSIsIGxlbmd0aDogMH0sCisgICAge2tleTogImZvY3VzIiwgbGVuZ3Ro
OiAwfSwKKyAgICB7a2V5OiAiYmx1ciIsIGxlbmd0aDogMH0sCisgICAge2tleTogInBvc3RNZXNz
YWdlIiwgbGVuZ3RoOiAxfSwKK107CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3Jz
ID0gWworICAgICJ3aW5kb3ciLAorICAgICJzZWxmIiwKKyAgICAibG9jYXRpb24iLAorICAgICJj
bG9zZWQiLAorICAgICJmcmFtZXMiLAorICAgICJsZW5ndGgiLAorICAgICJ0b3AiLAorICAgICJv
cGVuZXIiLAorICAgICJwYXJlbnQiLAorXS5tYXAoa2V5ID0+ICh7a2V5fSkpOworCitjb25zdCBt
YWtlQ3Jvc3NPcmlnaW5XaW5kb3cgPSB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBjb25zdCBwYXRoID0gbG9jYXRpb24ucGF0
aG5hbWUuc2xpY2UoMCwgbG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSkgKyAiL2Zy
YW1lLmh0bWwiOworICAgIGlmcmFtZS5zcmMgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVf
T1JJR0lOICsgcGF0aDsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUoaWZyYW1lLmNv
bnRlbnRXaW5kb3cpOyB9OworICAgICAgICBpZnJhbWUub25lcnJvciA9IHJlamVjdDsKKworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgICAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgICB9KTsKK307CkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2lu
L2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0
aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9i
amVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0
ICdsZW5ndGgnCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVj
dCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBo
YXMgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNl
dHRlciBoYXMgY29ycmVjdCAnbGVuZ3RoJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMt
ZnVuY3Rpb24tbGVuZ3RoLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUg
Y3JlYXRlZCB3aXRoIGNvcnJlY3QgJ2xlbmd0aCcgcHJvcGVydHk8L3RpdGxlPgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93
c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8ZGl2
IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQp
OworICAgIGZvciAoY29uc3Qge2tleSwgbGVuZ3RofSBvZiBjcm9zc09yaWdpbldpbmRvd01ldGhv
ZHMpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3W2tleV0ubGVuZ3RoLCBsZW5ndGgsIGB3LiR7
a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFs
dWUubGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dYCk7Cisg
ICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ2xlbmd0
aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBt
YWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09y
aWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mu
Z2V0Lmxlbmd0aCwgMCwgYHcuJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlv
biIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCBgdy4k
e2tleX1gKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vz
c29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNz
ZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubGVuZ3RoLCAxKTsKKyAgICBjb25zdCBkZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIp
OworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9y
aWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3Nz
T3JpZ2luV2luZG93KHQpOworICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNl
dC5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhh
cyBjb3JyZWN0ICdsZW5ndGgnIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LW5hbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNT
IENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENy
b3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZScKK1BBU1MgQ3Jv
c3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ25hbWUnCitQ
QVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICduYW1l
JworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8
IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2lu
IG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ25hbWUnIHBy
b3BlcnR5PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3Bl
cnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
b21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0
IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3Nz
T3JpZ2luV2luZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XS5uYW1l
LCBrZXksIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGRlc2MudmFsdWUubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHld
XWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0
ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3
YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNy
b3NzT3JpZ2luV2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
ZGVzYy5nZXQubmFtZSwgYGdldCAke2tleX1gKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxvY2F0
aW9uIikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5uYW1lLCBgc2V0ICR7
a2V5fWApOworICAgICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNz
b3JzIGhhdmUgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0
X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubmFtZSwgInJlcGxhY2UiKTsKKyAgICBjb25zdCBk
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFj
ZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCAicmVwbGFjZSIpOworfSwg
IkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1l
JyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1h
a2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMo
ZGVzYy5zZXQubmFtZSwgInNldCBocmVmIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBo
cmVmYCBzZXR0ZXIgaGFzIGNvcnJlY3QgJ25hbWUnIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422486</attachid>
            <date>2021-03-06 05:57:10 -0800</date>
            <delta_ts>2021-03-11 08:45:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210306115501-2.patch</filename>
            <type>text/plain</type>
            <size>56119</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDIxLTAzLTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDEuIEFkZCBXZWFrR0NNYXA6OmVuc3VyZSgpIHRv
IGF2b2lkIGRvdWJsZSBoYXNoaW5nIGFuZCBjbGVhbiB1cCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCkuCisgICAgICAgIDIuIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dl
dHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMgY3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBv
aW50ZXIuCisgICAgICAgIDMuIFJlbmFtZSBnZXRDdXN0b217R2V0dGVyLFNldHRlcn1GdW5jdGlv
bigpIHRvIGFsaWduIHdpdGggbmV3bHktYWRkZWQgSlNET01HbG9iYWxPYmplY3QgbWV0aG9kcy4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVy
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmdldEN1c3RvbVNldHRlckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorCiAyMDIxLTAzLTAz
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8g
YmUgY3JlYXRlZCBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjcz
ODg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGN1c3RvbUdldHRlckZ1bgogCiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiog
Y3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwotCiAgICAgR2V0VmFsdWVGdW5jIGdldHRlciA9IGN1c3RvbUdldHRlckZ1
bmN0aW9uLT5nZXR0ZXIoKTsKLSAgICBBU1NFUlQoZ2V0dGVyKTsKIAogICAgIGlmIChhdXRvIGRv
bUF0dHJpYnV0ZSA9IGN1c3RvbUdldHRlckZ1bmN0aW9uLT5kb21BdHRyaWJ1dGUoKSkgewogICAg
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8p
KQpAQCAtNjIsNiArNjAsNyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRl
ckZ1CiAKIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRy
aWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCiB7CisgICAgQVNTRVJUKGdldHRlcik7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0
b21HZXR0ZXJGdW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJp
bmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGdldHRlciwgZG9tQXR0cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAy
NzM4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihjdXN0b21TCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3Vz
dG9tU2V0dGVyRnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigp
OwotICAgIEFTU0VSVChzZXR0ZXIpOwogICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQpAQCAtNDksNiArNDgsNyBAQCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3Rv
bVNldHRlckZ1CiAKIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQogeworICAgIEFT
U0VSVChzZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRI
b3N0RnVuY3Rpb24oY3VzdG9tU2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXND
b25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1
Y3R1cmUoKTsKICAgICBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1
c3RvbVNldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc2V0dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyMSwyNCArMzUyMSwxOCBAQCBCdXR0
ZXJmbHkqIEpTT2JqZWN0OjphbGxvY2F0ZU1vcmVPdXRPZkxpCiAgICAgcmV0dXJuIEJ1dHRlcmZs
eTo6Y3JlYXRlT3JHcm93UHJvcGVydHlTdG9yYWdlKGJ1dHRlcmZseSgpLCB2bSwgdGhpcywgc3Ry
dWN0dXJlKHZtKSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CiB9CiAKLXN0YXRpYyBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uKiBnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWVG
dW5jLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCitzdGF0
aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3JlYXRlQ3VzdG9tR2V0dGVyRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0
VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4g
ZG9tQXR0cmlidXRlKQogewotICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRl
ckZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgpLmdldChn
ZXRWYWx1ZUZ1bmMpOwotICAgIGlmICghY3VzdG9tR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAg
Y3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5j
LCBkb21BdHRyaWJ1dGUpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0
aW9uTWFwKCkuc2V0KGdldFZhbHVlRnVuYywgY3VzdG9tR2V0dGVyRnVuY3Rpb24pOwotICAgIH0K
LSAgICByZXR1cm4gY3VzdG9tR2V0dGVyRnVuY3Rpb247CisgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5lbnN1cmUoZ2V0VmFsdWVGdW5jLCBbJl0gewor
ICAgICAgICByZXR1cm4gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFZhbHVlRnVuYywgZG9tQXR0
cmlidXRlKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLXN0YXRpYyBKU0N1
c3RvbVNldHRlckZ1bmN0aW9uKiBnZXRDdXN0b21TZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMg
cHV0VmFsdWVGdW5jKQorc3RhdGljIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3Rv
bVNldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZUZ1bmMpCiB7Ci0gICAgSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbiogY3VzdG9tU2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmN1
c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KHB1dFZhbHVlRnVuYyk7Ci0gICAgaWYgKCFjdXN0
b21TZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9IEpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBwdXRWYWx1ZUZ1bmMpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmN1
c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuc2V0KHB1dFZhbHVlRnVuYywgY3VzdG9tU2V0dGVyRnVu
Y3Rpb24pOwotICAgIH0KLSAgICByZXR1cm4gY3VzdG9tU2V0dGVyRnVuY3Rpb247CisgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25NYXAoKS5lbnN1cmUocHV0VmFs
dWVGdW5jLCBbJl0geworICAgICAgICByZXR1cm4gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHB1dFZh
bHVlRnVuYyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCiBib29sIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQpAQCAtMzU1OSw5ICszNTUzLDkgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKAogICAgICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcigoc2xv
dC5hdHRyaWJ1dGVzKCkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpICYgflByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBzbG90
QmFzZUdsb2JhbE9iamVjdCA9IHNsb3Quc2xvdEJhc2UoKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAg
ICAgICAgaWYgKHNsb3QuY3VzdG9tR2V0dGVyKCkpCi0gICAgICAgICAgICBkZXNjcmlwdG9yLnNl
dEdldHRlcihnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigpLCBzbG90LmRvbUF0dHJpYnV0ZSgpKSk7Cisg
ICAgICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihjcmVhdGVDdXN0b21HZXR0ZXJGdW5jdGlv
bihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigp
LCBzbG90LmRvbUF0dHJpYnV0ZSgpKSk7CiAgICAgICAgIGlmIChzbG90LmN1c3RvbVNldHRlcigp
KQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rp
b24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21TZXR0ZXIo
KSkpOworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoY3JlYXRlQ3VzdG9tU2V0dGVy
RnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21T
ZXR0ZXIoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsOSArNDE0LDQgQEAgaW5saW5lIHZv
aWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bQogICAgIH0KIH0KIAotdGVtcGxhdGU8UmF3
TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEVuY29kZWRKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9i
amVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgV1RGTW92ZSh2YWx1ZSkp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgQWRkUmVzdWx0
IGVuc3VyZShjb25zdCBLZXlUeXBlJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbWFwLmVuc3VyZShrZXksIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSk7CisgICAgfQorCiAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fbWFwLnJlbW92ZShrZXkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDMtMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxl
c2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNj
ZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRm9yIGNyb3NzLW9y
aWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzLCBXaW5kb3cgYW5kIExvY2F0aW9uIG9iamVjdHMgcmV0
dXJuIGRpZmZlcmVudCBKU0Z1bmN0aW9uCisgICAgICAgIGluc3RhbmNlcyBvbiBldmVyeSBbW0dl
dF1dLiBUaGUgaW50ZW50IHdhcyB0byBlbnN1cmUgaXNvbGF0aW9uIGJ5IHN1cHBseWluZyBkaWZm
ZXJlbnQgUmVhbG1zIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IGZ1bmN0aW9uIG9iamVjdHMuIEhv
d2V2ZXIsIHdpdGhpbiB0aGUgc2FtZSBjYWxsZWUgUmVhbG0sIHRoaXMgbWFrZXMgc3Vic2VxdWVu
dCBsb29rdXBzCisgICAgICAgIG9mIGEgY3Jvc3Mtb3JpZ2luIG1ldGhvZCAvIGFjY2Vzc29yIGZh
aWwgcmVmZXJlbmNlIGVxdWFsaXR5IHRlc3QsIHdoaWNoIGlzIHJhdGhlciBjb25mdXNpbmc6CisK
KyAgICAgICAgICAgIGBjcm9zc09yaWdpbldpbmRvdy5mb2N1cyA9PT0gY3Jvc3NPcmlnaW5XaW5k
b3cuZm9jdXMgLy8gPT4gZmFsc2VgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFtb
Q3Jvc3NPcmlnaW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXSwgYnJpbmdpbmcgY29uc2lzdGVudCBm
dW5jdGlvbiBpZGVudGl0eQorICAgICAgICBhbmQgYWxpZ25pbmcgV2ViS2l0IHdpdGggdGhlIHNw
ZWMgWzFdLCBCbGluaywgYW5kIEdlY2tvLiBGb3IgY29udmVuaWVuY2UsIGNhY2hlIG1hcHMgYXJl
IGFkZGVkIHRvCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0ICh0byBhY2NvbW1vZGF0ZSBSZW1v
dGVET01XaW5kb3cpIGFuZCBjb3ZlciBib3RoIFdpbmRvdyBhbmQgTG9jYXRpb24gb2JqZWN0cy4K
KworICAgICAgICBBcyBhIGNhY2hlIG1hcCBrZXksIGEgcGFpciBvZiBsZXhpY2FsIGdsb2JhbCBv
YmplY3QgYW5kIHJhdyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQsIHdoaWNoIGd1YXJhbnRlZXMK
KyAgICAgICAgY29ycmVjdG5lc3MgZXZlbiBpZiBXaW5kb3cgYW5kIExvY2F0aW9uIHdvdWxkIGV4
cG9zZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZS4KKworICAgICAgICBU
aGlzIHBhdGNoIHJlbW92ZXMgOSBjdXN0b20gZ2V0dGVycywgYWRkcyBydW50aW1lIGxvb2t1cCBm
b3IgInNob3dNb2RhbERpYWxvZyIgKHdoaWNoIGlzIHJhcmUpLAorICAgICAgICBhbmQgcmVtb3Zl
cyBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gZXh0ZW5kZWQgYXR0cmlidXRlIGFzIGl0J3Mgbm93
IHVudXNlZCBhbmQgbm9uLXRyaXZpYWwgdG8gZ2VuZXJhdGUuCisKKyAgICAgICAgQWxzbywgZml4
ZXMgY3Jvc3MtcmVhbG0gYHBvc3RNZXNzYWdlLmxlbmd0aGAgdG8gZXF1YWwgMSBhcyBwZXIgV2Vi
SURMLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkK
KworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1m
dW5jdGlvbi1jYWNoaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luR2V0
dGVyU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb246CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBh
Z2UvSGlzdG9yeS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICog
cGFnZS9SZW1vdGVET01XaW5kb3cuaWRsOgorCiAyMDIxLTAzLTA0ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVDb250ZW50QnVpbGRl
cjo6Y3JlYXRlRGlzcGxheU5vblJvb3RJbmxpbmVCb3hlcyBzaG91bGQgY2hlY2sgaWYgdGhlIGxp
bmUgaGFzIGlubGluZSBib3hlcyBhdCBhbGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOSBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvZGVCbG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNl
dHRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+CkBAIC03NSw2ICs3OCw4IEBAIEpTRE9NR2xvYmFs
T2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChWTSYKICAgICAsIG1fd29ybGQoV1RGTW92ZSh3b3Js
ZCkpCiAgICAgLCBtX3dvcmxkSXNOb3JtYWwobV93b3JsZC0+aXNOb3JtYWwoKSkKICAgICAsIG1f
YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkZ1bmN0aW9u
TWFwKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcCh2bSkKIHsKIH0KIApA
QCAtMjk4LDYgKzMwMywyNiBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJk
ZWRPCiAgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRE9NR2xv
YmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVGdW5jdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIENyb3NzT3JpZ2luTWFw
S2V5IGtleSA9IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxHbG9iYWxPYmplY3QsIG5hdGl2ZUZ1bmN0
aW9uLnJhd1BvaW50ZXIoKSk7CisgICAgcmV0dXJuIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1hcC5l
bnN1cmUoa2V5LCBbJl0geworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCksIGxleGljYWxHbG9iYWxPYmplY3QsIGxlbmd0aCwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKK30KKworR2V0dGVyU2V0dGVyKiBKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRl
Q3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIFB1dFZh
bHVlRnVuYyBzZXR0ZXIpCit7CisgICAgQVNTRVJUKGdldHRlciB8fCBzZXR0ZXIpOworICAgIENy
b3NzT3JpZ2luTWFwS2V5IGtleSA9IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdldHRlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldHRlcikgOiByZWludGVycHJldF9j
YXN0PHZvaWQqPihzZXR0ZXIpKTsKKyAgICByZXR1cm4gbV9jcm9zc09yaWdpbkdldHRlclNldHRl
ck1hcC5lbnN1cmUoa2V5LCBbJl0geworICAgICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgICAgIHJldHVybiBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIGdldHRlciA/IEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0
ZXIpIDogbnVsbHB0ciwKKyAgICAgICAgICAgIHNldHRlciA/IEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzZXR0ZXIp
IDogbnVsbHB0cik7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogLy8gaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIuaW8vc3BlYy93
ZWItYXBpL2luZGV4Lmh0bWwjY29tcGlsZS1hLXBvdGVudGlhbC13ZWJhc3NlbWJseS1yZXNwb25z
ZQogc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHNvdXJjZSwg
SlNDOjpXYXNtOjpDb21waWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0M6OkpTT2JqZWN0KiBpbXBv
cnRPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0xvY2tEdXJpbmdNYXJraW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODMsNiArODQsOSBAQCBwdWJsaWM6CiAK
ICAgICBKU0M6OkpTUHJveHkmIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVy
biAqbV9wcm94eS5nZXQoKTsgfQogCisgICAgSlNDOjpKU0Z1bmN0aW9uKiBjcmVhdGVDcm9zc09y
aWdpbkZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpOYXRpdmVGdW5jdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU0M6OkdldHRlclNldHRl
ciogY3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkdldFZhbHVlRnVuYywgSlNDOjpQdXRWYWx1ZUZ1bmMpOwor
CiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CiAKQEAgLTEyNCw3ICsxMjgsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZEJ1aWx0aW5HbG9iYWxzKEpTQzo6Vk0mKTsKICAgICBm
cmllbmQgdm9pZCBKU0J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9uczo6aW5pdGlhbGl6ZShKU0RPTUds
b2JhbE9iamVjdCYpOwogCisgICAgdXNpbmcgQ3Jvc3NPcmlnaW5NYXBLZXkgPSBzdGQ6OnBhaXI8
SlNDOjpKU0dsb2JhbE9iamVjdCosIHZvaWQqPjsKKwogICAgIEpTQnVpbHRpbkludGVybmFsRnVu
Y3Rpb25zIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOworICAgIEpTQzo6V2Vha0dDTWFwPENy
b3NzT3JpZ2luTWFwS2V5LCBKU0M6OkpTRnVuY3Rpb24+IG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1h
cDsKKyAgICBKU0M6OldlYWtHQ01hcDxDcm9zc09yaWdpbk1hcEtleSwgSlNDOjpHZXR0ZXJTZXR0
ZXI+IG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXJNYXA7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBD
b25zdHJ1Y3RvckNsYXNzPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCwxMiArNDgsOSBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVy
bmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNN
aWNyb3Rhc2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KQEAgLTY3LDU4
ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rp
b25fb3BlbkRhdGFiYXNlKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVt
b3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5v
bkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNo
aW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNh
Y2hpbmcpOwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd193ZWJraXQpOwogI2VuZGlmCiAKLUpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1
ck5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdT
dGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2JsdXIsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9u
R2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ciwgMD4oZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1v
dGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxq
c1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2UsIDA+KGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0g
ICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJ
bnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19
Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fZm9jdXNOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBu
b25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9mb2N1cywgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1K
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3Vz
Tm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXMs
IDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNh
Y2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RN
ZXNzYWdlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25D
YWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2Fn
ZSwgMj4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgogdm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oVmlz
aXRvciYgdmlzaXRvcikKIHsKQEAgLTE1Nyw0NSArMTA2LDM0IEBAIGJvb2wganNET01XaW5kb3dH
ZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pCiAKICAgICAvLyBU
aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3ZSBhbGxvdyBhY2Nlc3MgdG8gY3Jvc3Mtb3JpZ2luIChE
b05vdENoZWNrU2VjdXJpdHkgaW4gSURMKS4KLSAgICAvLyBBbHdheXMgcHJvdmlkZSB0aGUgb3Jp
Z2luYWwgZnVuY3Rpb24sIG9uIGEgZnJlc2ggdW5jYWNoZWQgZnVuY3Rpb24gb2JqZWN0LgotICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmJsdXJQdWJsaWNOYW1lKCkpIHsKLSAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVtb3Rl
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZVB1YmxpY05hbWUo
KSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8g
anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyA6IGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZm9jdXNQ
dWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6
OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hp
bmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9
PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rp
b25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bv
c3RNZXNzYWdlTm9uQ2FjaGluZyk7CisgICAgYXV0byogY2xhc3NJbmZvID0gd2luZG93VHlwZSA9
PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpIDogSlNE
T01XaW5kb3c6OmluZm8oKTsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5j
bG9zZVB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LmZvY3VzUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFt
ZXMuYmx1clB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpKSB7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gY2xh
c3NJbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBhdXRvKiBqc0Z1bmN0aW9uID0gdGhpc09iamVjdC0+Y3JlYXRlQ3Jvc3NPcmlnaW5GdW5jdGlv
bigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSwg
ZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwganNGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IFdoZW4gYWNjZXNzaW5nIGNyb3NzLW9yaWdpbiBrbm93biBXaW5kb3cgcHJvcGVydGllcywgd2Ug
YWx3YXlzIHVzZSB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZ2V0dGVyLAogICAgIC8vIGV2ZW4gaWYg
dGhlIHByb3BlcnR5IHdhcyByZW1vdmVkIC8gcmVkZWZpbmVkLiBBcyBvZiBlYXJseSAyMDE2LCB0
aGlzIG1hdGNoZXMgRmlyZWZveCBhbmQgQ2hyb21lJ3MKICAgICAvLyBiZWhhdmlvci4KLSAgICBh
dXRvKiBjbGFzc0luZm8gPSB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IEpT
UmVtb3RlRE9NV2luZG93OjppbmZvKCkgOiBKU0RPTVdpbmRvdzo6aW5mbygpOwotICAgIGlmIChh
dXRvKiBlbnRyeSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKSkgewotICAgICAgICAvLyBPbmx5IGFsbG93IGFjY2VzcyB0byB0aGVzZSBzcGVjaWZp
YyBwcm9wZXJ0aWVzLgotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5s
b2NhdGlvblB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5jbG9zZWRQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSBidWlsdGluTmFtZXMuc2VsZlB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlO
YW1lID09IGJ1aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZnJhbWVzUHVibGljTmFtZSgpCi0gICAgICAgICAg
ICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLm9wZW5lclB1YmxpY05hbWUoKQotICAg
ICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1l
KCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9wUHVibGlj
TmFtZSgpKSB7Ci0gICAgICAgICAgICBhdXRvKiBnZXR0ZXIgPSBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5wcm9wZXJ0eUdldHRlcigpKTsKLSAgICAgICAgICAgIGF1dG8qIHNldHRlciA9IHByb3BlcnR5
TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBhdXRvKiBn
ZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGdldHRlciwgc2V0dGVyKTsKLSAgICAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlz
T2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0sIGdldHRlclNldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLndpbmRvd1B1YmxpY05h
bWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnNlbGZQdWJsaWNO
YW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1
YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3Nl
ZFB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZy
YW1lc1B1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMudG9w
UHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMub3Bl
bmVyUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMu
cGFyZW50UHVibGljTmFtZSgpKSB7CisgICAgICAgIGF1dG8qIGVudHJ5ID0gY2xhc3NJbmZvLT5z
dGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvKiBz
ZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgp
ID8gZW50cnktPnByb3BlcnR5UHV0dGVyKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiBnZXR0
ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5jcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwg
c2V0dGVyKTsKKyAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgZ2V0dGVy
U2V0dGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9y
IGNoaWxkIGZyYW1lcyBieSBuYW1lIGJlZm9yZSBidWlsdC1pbiBwcm9wZXJ0aWVzIHRvIG1hdGNo
IE1vemlsbGEuIFRoaXMgZG9lcwpAQCAtMjY1LDcgKzIwMyw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICAgICAgLy8gRGV0ZWN0IHdoZW4gd2UncmUgZ2V0
dGluZyB0aGUgcHJvcGVydHkgJ3Nob3dNb2RhbERpYWxvZycsIHRoaXMgaXMgZGlzYWJsZWQsIGFu
ZCBoYXMgaXRzIG9yaWdpbmFsIHZhbHVlLgogICAgICAgICBib29sIGlzU2hvd01vZGFsRGlhbG9n
QW5kU2hvdWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LnNob3dNb2RhbERpYWxvZ1B1YmxpY05hbWUoKQogICAgICAgICAgICAgJiYgKCFmcmFtZSB8fCAh
RE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZyYW1lKSkKLSAgICAgICAgICAgICYmIHNs
b3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9uKHNsb3QuZ2V0VmFsdWUobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Nob3dN
b2RhbERpYWxvZyk7CisgICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUoKSAmJiBpc0hvc3RGdW5j
dGlvbihzbG90LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSksIHNf
aW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpLT5mdW5jdGlvbigp
KTsKICAgICAgICAgLy8gVW5sZXNzIHdlJ3JlIGluIHRoZSBzaG93TW9kYWxEaWFsb2cgc3BlY2lh
bCBjYXNlLCB3ZSdyZSBkb25lLgogICAgICAgICBpZiAoIWlzU2hvd01vZGFsRGlhbG9nQW5kU2hv
dWxkSGlkZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI3Mzg4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwyMSArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3Rv
bS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0
ZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0xvb2t1cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0xvY2F0aW9uSW5z
dGFuY2VGdW5jdGlvbl9yZXBsYWNlTm9uQ2FjaGluZyk7Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0xvY2F0aW9uSW5zdGFuY2VGdW5jdGlvbl9yZXBsYWNlTm9uQ2FjaGluZywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVy
SW1wbDxqc0xvY2F0aW9uSW5zdGFuY2VGdW5jdGlvbl9yZXBsYWNlLCAxPihnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7Ci19Ci0KIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1v
bihKU0xvY2F0aW9uJiB0aGlzT2JqZWN0LCBKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKQEAgLTY0LDcgKzU1LDkgQEAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpTTAogCiAgICAgLy8gV2Ugb25s
eSBhbGxvdyBhY2Nlc3MgdG8gTG9jYXRpb24ucmVwbGFjZSgpIGNyb3NzIG9yaWdpbi4KICAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2UpIHsKLSAgICAgICAg
c2xvdC5zZXRDdXN0b20oJnRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBqc0xv
Y2F0aW9uSW5zdGFuY2VGdW5jdGlvbl9yZXBsYWNlTm9uQ2FjaGluZyk7CisgICAgICAgIGF1dG8q
IGVudHJ5ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShw
cm9wZXJ0eU5hbWUpOworICAgICAgICBhdXRvKiBqc0Z1bmN0aW9uID0gdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKS0+Y3JlYXRlQ3Jvc3NPcmlnaW5GdW5jdGlvbigmbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3Ro
KCkpOworICAgICAgICBzbG90LnNldFZhbHVlKCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGpzRnVuY3Rpb24pOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTcyLDggKzY1LDcgQEAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpTTAogICAgIC8vIGEgZGVzY3JpcHRvciB0aGF0
IGhhcyBhIHNldHRlciBidXQgbm8gZ2V0dGVyLgogICAgIGlmIChzbG90LmludGVybmFsTWV0aG9k
VHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0
eSAmJiBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05hbWUoKSkgewogICAgICAgICBhdXRv
KiBlbnRyeSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnko
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgYXV0byogc2V0dGVyID0gSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRy
eS0+cHJvcGVydHlQdXR0ZXIoKSk7Ci0gICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbHB0ciwgc2V0dGVy
KTsKKyAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KS0+Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoJmxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgbnVsbHB0ciwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwogICAgICAgICBz
bG90LnNldEdldHRlclNsb3QoJnRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
ciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgZ2V0dGVyU2V0dGVyKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3Mzg4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDY2LDkgKzMwNjYsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBteSAkbnVt
Q3VzdG9tT3BlcmF0aW9ucyA9IDA7CiAgICAgbXkgJG51bUN1c3RvbUF0dHJpYnV0ZXMgPSAwOwog
Ci0gICAgbXkgJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRpb25zID0gMDsKLSAgICBteSAkaGFz
Rm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMgPSAwOwotCiAgICAgbXkgJGhhc0RPTUpJVEF0dHJp
YnV0ZXMgPSAwOwogCiAgICAgIyBBdHRyaWJ1dGUgYW5kIGZ1bmN0aW9uIGVudW1zCkBAIC0zMDg0
LDggKzMwODEsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKLQotICAgICAgICAgICAgJGhhc0Zvcndh
cmREZWNsYXJpbmdBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzE0
NCw3ICszMTM5LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBmb3JlYWNoIG15ICRvcGVy
YXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgJG51bUN1c3RvbU9w
ZXJhdGlvbnMrKyBpZiBIYXNDdXN0b21NZXRob2QoJG9wZXJhdGlvbik7Ci0gICAgICAgICRoYXNG
b3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucyA9IDEgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgfQogCiAgICAgaWYgKCRudW1D
dXN0b21PcGVyYXRpb25zID4gMCkgewpAQCAtMzI3MCw1MiArMzI2NCw2IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogCiAgICAgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbihcQGhlYWRlckNvbnRl
bnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFy
YXRpb24oJGludGVyZmFjZSk7CiAKLSAgICBpZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRp
b25zKSB7Ci0gICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQg
aWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZElu
ZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKLQotICAgICAgICAgICAgaWYgKCRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewotICAgICAg
ICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7
Ci0gICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7Ci0gICAg
ICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBteSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPSBHZXRDb25kaXRpb25hbEZvck9wZXJh
dGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRvcGVyYXRpb24pOwotICAgICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3It
PkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFs
QXR0cmlidXRlKSA6IHVuZGVmOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKCR7ZnVuY3Rpb25OYW1lfSk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNv
cHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIlxuIik7Ci0gICAgfQotCi0gICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRl
cykgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCIvLyBBdHRyaWJ1dGVzXG5cbiIpOwot
ICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30p
IHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwotCi0gICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIpOwotICAgICAgICAgICAgaWYgKCFJc1JlYWRv
bmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJp
YnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoJHtzZXR0ZXJ9KTtcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgIyBDaGVja0pTQ2FzdCBTbmlwcGV0IGZ1bmN0aW9uLgogICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7CiAgICAgICAgICRoZWFk
ZXJJbmNsdWRlc3siPEphdmFTY3JpcHRDb3JlL1NuaXBwZXQuaD4ifSA9IDE7CkBAIC00MzA3LDcg
KzQyNTUsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRp
b24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgICAgIG5leHQgaWYgJG9w
ZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+
IDE7Ci0gICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlv
bi0+bmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iOwogCkBAIC00MzUzLDcgKzQzMDAsNiBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAKICAgICAgICAgZm9yZWFjaCBt
eSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBu
ZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5I
ZWFkZXJ9OwogICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKTsKIAogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5l
cmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgko
cmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5ICsyMjMsNiBAQAogICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jRXhwb3Nl
ZCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIkZvcndhcmREZWNsYXJlSW5I
ZWFkZXIiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAi
b3BlcmF0aW9uIl0KLSAgICAgICAgfSwKICAgICAgICAgIkdlbmVyYXRlSXNSZWFjaGFibGUiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIiIsICJJbXBsIiwgIkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiLCAi
SW1wbENhbnZhc0Jhc2UiLCAiSW1wbERvY3VtZW50IiwgIkltcGxFbGVtZW50Um9vdCIsICJJbXBs
T3duZXJOb2RlUm9vdCIsICJJbXBsU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsICJSZWFjaGFibGVG
cm9tRE9NV2luZG93IiwgIlJlYWNoYWJsZUZyb21OYXZpZ2F0b3IiXQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjczODg4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMSArNjIsMTEgQEAKICAgICBb
UmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIHN0YXR1c2JhcjsKICAgICBb
UmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCYXJQcm9wIHRvb2xiYXI7CiAgICAgYXR0
cmlidXRlIERPTVN0cmluZyBzdGF0dXM7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdp
dGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBj
bG9zZSgpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKKyAgICBbRG9Ob3RDaGVja1NlY3Vy
aXR5LCBDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudF0gdW5kZWZpbmVkIGNsb3NlKCk7CisgICAg
W0RvTm90Q2hlY2tTZWN1cml0eV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOwog
ICAgIHVuZGVmaW5lZCBzdG9wKCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9
SW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9jdXMo
KTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRl
ZmluZWQgYmx1cigpOworICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUluY3VtYmVu
dFdpbmRvd10gdW5kZWZpbmVkIGZvY3VzKCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eV0gdW5k
ZWZpbmVkIGJsdXIoKTsKIAogICAgIC8vIG90aGVyIGJyb3dzaW5nIGNvbnRleHRzCiAgICAgW1Jl
cGxhY2VhYmxlLCBEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciwgQ3VzdG9tR2V0dGVyXSByZWFk
b25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwpAQCAtOTEsOCArOTEsOCBAQAogICAg
IERPTVN0cmluZz8gcHJvbXB0KG9wdGlvbmFsIERPTVN0cmluZyBtZXNzYWdlID0gIiIsIG9wdGlv
bmFsIERPTVN0cmluZyBkZWZhdWx0VmFsdWUgPSAiIik7CiAgICAgdW5kZWZpbmVkIHByaW50KCk7
CiAKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVj
a1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5k
ZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBv
cHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwotICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmRE
ZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIG9wdGlvbmFsIFdpbmRvd1Bvc3RNZXNzYWdlT3B0aW9ucyBvcHRpb25zKTsK
KyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1Nl
Y3VyaXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRy
YW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93
LCBEb05vdENoZWNrU2VjdXJpdHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1l
c3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIFdpbmRvd1Bvc3RNZXNzYWdlT3B0aW9ucyBvcHRp
b25zKTsKIAogCiAgICAgLy8gT2Jzb2xldGU6IFN0aWxsIHBhcnQgb2YgdGhlIEhUTUwgc3BlY2lm
aWNhdGlvbiAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jV2luZG93LXBhcnRpYWwpLgpA
QCAtMTE5LDcgKzExOSw3IEBACiAgICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPUlPU19H
RVNUVVJFX0VWRU5UU10gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmdlc3R1cmVzdGFydDsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZDogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbiBhbmQgYnkgb3RoZXIgYnJvd3NlcnMuCi0gICAgW0N1c3RvbSwgRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcl0gYW55IHNob3dNb2RhbERpYWxvZyhET01TdHJpbmcgdXJsLCBvcHRp
b25hbCBhbnkgZGlhbG9nQXJncywgb3B0aW9uYWwgRE9NU3RyaW5nIGZlYXR1cmVBcmdzKTsKKyAg
ICBbQ3VzdG9tXSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIGFu
eSBkaWFsb2dBcmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZUFyZ3MpOwogCiAgICAgLy8g
Tm9uLXN0YW5kYXJkOiBzaG91bGQgcHJvYmFibHkgZGVwcmVjYXRlIHRoaXMgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY1MykuCiAgICAgLy8gQmxpbmsgYWxyZWFk
eSBkZXByZWNhdGVkIGl0IChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD00Mzc1NjkpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCShyZXZp
c2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAgICAgYXR0cmlidXRlIFNjcm9sbFJlc3RvcmF0aW9u
IHNjcm9sbFJlc3RvcmF0aW9uOwogICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkg
c3RhdGU7CiAKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJd
IHVuZGVmaW5lZCBiYWNrKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyXSB1bmRlZmluZWQgZm9yd2FyZCgpOwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGdvKG9wdGlvbmFsIGxvbmcgZGVsdGEg
PSAwKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBiYWNrKCk7CisgICAgW0Nh
bGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgZm9yd2FyZCgpOworICAgIFtDYWxsV2l0aD1Eb2N1
bWVudF0gdW5kZWZpbmVkIGdvKG9wdGlvbmFsIGxvbmcgZGVsdGEgPSAwKTsKIAogICAgIC8vIEZJ
WE1FOiB0aXRsZSBzaG91bGQgbm90IGJlIG51bGxhYmxlIGFzIHBlciB0aGUgSFRNTCBzcGVjaWZp
Y2F0aW9uLgogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHB1c2hTdGF0ZShTZXJp
YWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgRE9NU3RyaW5nPyB0aXRsZSwgb3B0aW9uYWwgVVNWU3Ry
aW5nPyB1cmwgPSBudWxsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lv
biAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDUsOSArNDUsOSBAQAogXSBpbnRlcmZhY2UgTG9jYXRpb24gewogICAgIFtTZXR0
ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eU9u
U2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhyZWY7CiAKLSAgICBbQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbiwgRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKLSAgICBb
RG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1h
eVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcmVwbGFj
ZShVU1ZTdHJpbmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93LCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcmVsb2FkKCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBhc3NpZ24oVVNW
U3RyaW5nIHVybCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2lu
ZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlcGxhY2UoVVNW
U3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvd10gdW5kZWZpbmVkIHJlbG9h
ZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0cmlidXRlcwogICAgIFtTZXR0ZXJD
YWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcHJv
dG9jb2w7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAyNzM4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgIFtMZWdhY3lVbmZvcmdlYWJs
ZSwgSW1wbGVtZW50ZWRBcz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgd2lu
ZG93OwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHNl
bGY7CiAgICAgW1B1dEZvcndhcmRzPWhyZWYsIExlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBh
dHRyaWJ1dGUgTG9jYXRpb24/IGxvY2F0aW9uOyAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBudWxs
YWJsZS4KLSAgICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5I
ZWFkZXJdIHVuZGVmaW5lZCBjbG9zZSgpOwotICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7Ci0gICAgW0NhbGxXaXRoPUluY3VtYmVu
dFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7Ci0gICAg
W0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7CisgICAgW0NhbGxXaXRo
PUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvd10gdW5k
ZWZpbmVkIGZvY3VzKCk7CisgICAgdW5kZWZpbmVkIGJsdXIoKTsKICAgICBbUmVwbGFjZWFibGUs
IEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGZyYW1l
czsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKICAgICBbTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eT8gdG9wOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gb3BlbmVyOwog
ICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJlbnQ7
Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5n
IHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsK
KyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvd10gdW5kZWZpbmVkIHBv
c3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBz
ZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogfTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
Mzg4OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDIxLTAzLTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KKworICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBX
aW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sOgorCiAyMDIxLTAz
LTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTnVsbCBjaGVjayBw
bGF0Zm9ybURhdGEgd2hlbiBkZWNvZGluZwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5k
b3ctb3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Mzg4OCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMSBAQCBQQVNTIHcuY2xvc2UgaXMgYW4gaW5z
dGFuY2Ugb2YgRnVuY3Rpb24KIFBBU1Mgdy5mb2N1cyBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlv
bgogUEFTUyB3LmJsdXIgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KIFBBU1Mgdy5wb3N0TWVz
c2FnZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyB3LmNsb3NlIGlzIHcuY2xvc2UK
K1BBU1Mgdy5mb2N1cyBpcyB3LmZvY3VzCitQQVNTIHcuYmx1ciBpcyB3LmJsdXIKK1BBU1Mgdy5w
b3N0TWVzc2FnZSBpcyB3LnBvc3RNZXNzYWdlCitQQVNTIHcucG9zdE1lc3NhZ2UubGVuZ3RoIGlz
IDEKIFBBU1Mgdy5wb3N0TWVzc2FnZSgndGVzdCcsICcqJykgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIHcuZm9jdXMoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5ibHVy
KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Bl
bi5odG1sCShyZXZpc2lvbiAyNzM4ODgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDExIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgc2hvdWxkQmVUeXBlKCJ3LmZv
Y3VzIiwgIkZ1bmN0aW9uIik7CiAgICAgc2hvdWxkQmVUeXBlKCJ3LmJsdXIiLCAiRnVuY3Rpb24i
KTsKICAgICBzaG91bGRCZVR5cGUoIncucG9zdE1lc3NhZ2UiLCAiRnVuY3Rpb24iKTsKKyAgICBz
aG91bGRCZSgidy5jbG9zZSIsICJ3LmNsb3NlIik7CisgICAgc2hvdWxkQmUoIncuZm9jdXMiLCAi
dy5mb2N1cyIpOworICAgIHNob3VsZEJlKCJ3LmJsdXIiLCAidy5ibHVyIik7CisgICAgc2hvdWxk
QmUoIncucG9zdE1lc3NhZ2UiLCAidy5wb3N0TWVzc2FnZSIpOworICAgIHNob3VsZEJlKCJ3LnBv
c3RNZXNzYWdlLmxlbmd0aCIsICIxIik7CiAgICAgc2hvdWxkTm90VGhyb3coIncucG9zdE1lc3Nh
Z2UoJ3Rlc3QnLCAnKicpIik7CiAgICAgc2hvdWxkTm90VGhyb3coIncuZm9jdXMoKSIpOwogICAg
IHNob3VsZE5vdFRocm93KCJ3LmJsdXIoKSIpOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzQwMzIpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMDYgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3Nz
LW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxl
eGljYWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1jYWNoaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2Jq
ZWN0cy1mdW5jdGlvbi1jb21tb24uanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1v
cmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LW5hbWUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDMtMDUgIENocmlzIExvcmQgIDxjbG9yZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEFsbG93IENTUyBmb250LXN0eWxpbmcgZm9yIGNhbnZhcyB3aXRo
b3V0IFJlbmRlclN0eWxlCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1v
cmlnaW4gV2luZG93IG1ldGhvZHMgYXJlIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93
IGFjY2Vzc29ycyBhcmUgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFj
ZWAgbWV0aG9kIGlzIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNl
dHRlciBpcyBjYWNoZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
YWNoaW5nLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNhY2hlZCBw
ZXIgUmVhbG0gdmlhW1tDcm9zc09yaWdpblByb3BlcnR5RGVzY3JpcHRvck1hcF1dPC90aXRsZT4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywt
cC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2Ny
aXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdp
bldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93TWV0
aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XSwgd1trZXldLCBgdy4ke2tleX0g
dmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mx
LnZhbHVlLCBkZXNjMi52YWx1ZSwgYHcuJHtrZXl9IHZpYSBbW0dldE93blByb3BlcnR5XV1gKTsK
KyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRob2RzIGFyZSBjYWNoZWQiKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NP
cmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRv
d0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEu
Z2V0LCBkZXNjMi5nZXQsIGB3LiR7a2V5fSBnZXR0ZXJgKTsKKyAgICAgICAgaWYgKGtleSA9PT0g
ImxvY2F0aW9uIikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2My
LnNldCwgYHcuJHtrZXl9IHNldHRlcmApOworICAgICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9y
aWdpbiBXaW5kb3cgYWNjZXNzb3JzIGFyZSBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UsIHcubG9jYXRpb24ucmVwbGFjZSwg
InZpYSBbW0dldF1dIik7CisgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBsYWNlIik7CisgICAgY29uc3QgZGVzYzIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBsYWNlIik7CisgICAg
YXNzZXJ0X2VxdWFscyhkZXNjMS52YWx1ZSwgZGVzYzIudmFsdWUsICJ2aWEgW1tHZXRPd25Qcm9w
ZXJ0eV1dIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMg
Y2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdh
aXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGNvbnN0IGRl
c2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIp
OworICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuc2V0LCBkZXNjMi5zZXQpOworfSwgIkNyb3NzLW9y
aWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGlzIGNhY2hlZCIpOworPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcwkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisidXNlIHN0cmlj
dCI7CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcyA9IFsKKyAgICB7a2V5OiAiY2xv
c2UiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6ICJmb2N1cyIsIGxlbmd0aDogMH0sCisgICAge2tl
eTogImJsdXIiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6ICJwb3N0TWVzc2FnZSIsIGxlbmd0aDog
MX0sCitdOworCitjb25zdCBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycyA9IFsKKyAgICAid2lu
ZG93IiwKKyAgICAic2VsZiIsCisgICAgImxvY2F0aW9uIiwKKyAgICAiY2xvc2VkIiwKKyAgICAi
ZnJhbWVzIiwKKyAgICAibGVuZ3RoIiwKKyAgICAidG9wIiwKKyAgICAib3BlbmVyIiwKKyAgICAi
cGFyZW50IiwKK10ubWFwKGtleSA9PiAoe2tleX0pKTsKKworY29uc3QgbWFrZUNyb3NzT3JpZ2lu
V2luZG93ID0gdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgY29uc3QgcGF0aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnNsaWNlKDAs
IGxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpICsgIi9mcmFtZS5odG1sIjsKKyAg
ICBpZnJhbWUuc3JjID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIHBhdGg7
CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAg
ICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNvbHZlKGlmcmFtZS5jb250ZW50V2luZG93KTsg
fTsKKyAgICAgICAgaWZyYW1lLm9uZXJyb3IgPSByZWplY3Q7CisKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFt
ZS5yZW1vdmUoKTsgfSk7CisgICAgfSk7Cit9OwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4t
b2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWxlbmd0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACisKK1BB
U1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRob2RzIGhhdmUgY29ycmVjdCAnbGVuZ3RoJworUEFT
UyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCcKK1BB
U1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ2xl
bmd0aCcKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJl
Y3QgJ2xlbmd0aCcKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2lu
L2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0
aC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRp
dGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBj
b3JyZWN0ICdsZW5ndGgnIHByb3BlcnR5PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9z
c29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dl
dC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4t
b2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+
Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNv
bnN0IHtrZXksIGxlbmd0aH0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMod1trZXldLmxlbmd0aCwgbGVuZ3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0
XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgbGVu
Z3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9z
cy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2lu
V2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dBY2Nl
c3NvcnMpIHsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdldC5sZW5ndGgsIDAs
IGB3LiR7a2V5fWApOworICAgICAgICBpZiAoa2V5ID09PSAibG9jYXRpb24iKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lmxlbmd0aCwgMSwgYHcuJHtrZXl9YCk7CisgICAg
ICAgIH0KKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgaGF2ZSBjb3Jy
ZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3
ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGFzc2VydF9lcXVhbHMody5s
b2NhdGlvbi5yZXBsYWNlLmxlbmd0aCwgMSk7CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCAxKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24g
YHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbGVuZ3RoJyIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0
KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3Lmxv
Y2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxKTsK
K30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbGVu
Z3RoJyIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tbmFtZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1v
cmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4g
V2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmlnaW4gV2lu
ZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmln
aW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbmFtZScKKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1u
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1u
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBh
Y2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBjb3JyZWN0ICduYW1lJyBwcm9wZXJ0eTwvdGl0bGU+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2Jyb3dzZXJzLmh0bWwjY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8s
LXAtKSI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzIj48L3Nj
cmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmln
aW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd01l
dGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3W2tleV0ubmFtZSwga2V5LCBgdy4ke2tl
eX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVl
Lm5hbWUsIGtleSwgYHcuJHtrZXl9IHZpYSBbW0dldE93blByb3BlcnR5XV1gKTsKKyAgICB9Cit9
LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRob2RzIGhhdmUgY29ycmVjdCAnbmFtZSciKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NP
cmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRv
d0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lm5hbWUs
IGBnZXQgJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFtZSwgYHNldCAke2tleX1gKTsKKyAgICAg
ICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJl
Y3QgJ25hbWUnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0g
YXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGFzc2VydF9lcXVhbHMody5sb2Nh
dGlvbi5yZXBsYWNlLm5hbWUsICJyZXBsYWNlIik7CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgInJlcGxhY2UiKTsKK30sICJDcm9zcy1vcmlnaW4g
TG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5X
aW5kb3codCk7CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iody5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lm5hbWUs
ICJzZXQgaHJlZiIpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhh
cyBjb3JyZWN0ICduYW1lJyIpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422937</attachid>
            <date>2021-03-11 08:45:31 -0800</date>
            <delta_ts>2021-03-11 16:12:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210311184529.patch</filename>
            <type>text/plain</type>
            <size>56226</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDIxLTAzLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDEuIEFkZCBXZWFrR0NNYXA6OmVuc3VyZSgpIHRv
IGF2b2lkIGRvdWJsZSBoYXNoaW5nIGFuZCBjbGVhbiB1cCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCkuCisgICAgICAgIDIuIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dl
dHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMgY3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBv
aW50ZXIuCisgICAgICAgIDMuIFJlbmFtZSBnZXRDdXN0b217R2V0dGVyLFNldHRlcn1GdW5jdGlv
bigpIHRvIGFsaWduIHdpdGggbmV3bHktYWRkZWQgSlNET01HbG9iYWxPYmplY3QgbWV0aG9kcy4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVy
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmdldEN1c3RvbVNldHRlckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorCiAyMDIxLTAzLTEx
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI3NDI2My4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lv
biAyNzQyNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0dGVyRnVuCiAKICAgICBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uKiBjdXN0b21HZXR0ZXJGdW5jdGlvbiA9IGpzQ2FzdDxKU0N1c3RvbUdldHRlckZ1bmN0aW9u
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7Ci0KICAgICBHZXRWYWx1ZUZ1bmMgZ2V0dGVyID0gY3VzdG9tR2V0
dGVyRnVuY3Rpb24tPmdldHRlcigpOwotICAgIEFTU0VSVChnZXR0ZXIpOwogCiAgICAgaWYgKGF1
dG8gZG9tQXR0cmlidXRlID0gY3VzdG9tR2V0dGVyRnVuY3Rpb24tPmRvbUF0dHJpYnV0ZSgpKSB7
CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNz
SW5mbykpCkBAIC02Miw2ICs2MCw3IEBAIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9t
R2V0dGVyRnUKIAogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIE9wdGlvbmFsPERP
TUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKIHsKKyAgICBBU1NFUlQoZ2V0dGVy
KTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9u
KGN1c3RvbUdldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Is
IFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7CiAg
ICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1dGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDI3NDI3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGN1c3RvbVMKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgUHV0VmFsdWVGdW5jIHNldHRlciA9IGpz
Q2FzdDxKU0N1c3RvbVNldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+c2V0
dGVyKCk7Ci0gICAgQVNTRVJUKHNldHRlcik7CiAgICAgc2V0dGVyKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUoY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CkBAIC00OSw2ICs0OCw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OkpT
Q3VzdG9tU2V0dGVyRnUKIAogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCiB7Cisg
ICAgQVNTRVJUKHNldHRlcik7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0ZXJGdW5jdGlv
blN0cnVjdHVyZSgpOwogICAgIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkp
IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBzZXR0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIxLDI0ICszNTIxLDE4IEBA
IEJ1dHRlcmZseSogSlNPYmplY3Q6OmFsbG9jYXRlTW9yZU91dE9mTGkKICAgICByZXR1cm4gQnV0
dGVyZmx5OjpjcmVhdGVPckdyb3dQcm9wZXJ0eVN0b3JhZ2UoYnV0dGVyZmx5KCksIHZtLCB0aGlz
LCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXplKTsKIH0KIAotc3RhdGljIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24qIGdldEN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXRW
YWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkK
K3N0YXRpYyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjcmVhdGVDdXN0b21HZXR0ZXJGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWVGdW5jLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiBkb21BdHRyaWJ1dGUpCiB7Ci0gICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3VzdG9t
R2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKCku
Z2V0KGdldFZhbHVlRnVuYyk7Ci0gICAgaWYgKCFjdXN0b21HZXR0ZXJGdW5jdGlvbikgewotICAg
ICAgICBjdXN0b21HZXR0ZXJGdW5jdGlvbiA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRWYWx1
ZUZ1bmMsIGRvbUF0dHJpYnV0ZSk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVy
RnVuY3Rpb25NYXAoKS5zZXQoZ2V0VmFsdWVGdW5jLCBjdXN0b21HZXR0ZXJGdW5jdGlvbik7Ci0g
ICAgfQotICAgIHJldHVybiBjdXN0b21HZXR0ZXJGdW5jdGlvbjsKKyAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgpLmVuc3VyZShnZXRWYWx1ZUZ1bmMsIFsm
XSB7CisgICAgICAgIHJldHVybiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5jLCBk
b21BdHRyaWJ1dGUpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotc3RhdGlj
IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGdldEN1c3RvbVNldHRlckZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVl
RnVuYyBwdXRWYWx1ZUZ1bmMpCitzdGF0aWMgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogY3JlYXRl
Q3VzdG9tU2V0dGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHV0VmFsdWVGdW5jIHB1dFZhbHVlRnVuYykKIHsKLSAgICBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9IGdsb2JhbE9iamVj
dC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25NYXAoKS5nZXQocHV0VmFsdWVGdW5jKTsKLSAgICBpZiAo
IWN1c3RvbVNldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAgIGN1c3RvbVNldHRlckZ1bmN0aW9uID0g
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHB1dFZhbHVlRnVuYyk7Ci0gICAgICAgIGdsb2JhbE9iamVj
dC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25NYXAoKS5zZXQocHV0VmFsdWVGdW5jLCBjdXN0b21TZXR0
ZXJGdW5jdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBjdXN0b21TZXR0ZXJGdW5jdGlvbjsKKyAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0ZXJGdW5jdGlvbk1hcCgpLmVuc3VyZShw
dXRWYWx1ZUZ1bmMsIFsmXSB7CisgICAgICAgIHJldHVybiBKU0N1c3RvbVNldHRlckZ1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
cHV0VmFsdWVGdW5jKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIGJvb2wg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCkBAIC0zNTU5LDkgKzM1NTMsOSBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9y
KChzbG90LmF0dHJpYnV0ZXMoKSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikgJiB+UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IHNsb3RCYXNlR2xvYmFsT2JqZWN0ID0gc2xvdC5zbG90QmFzZSgpLT5nbG9iYWxPYmplY3Qodm0p
OwogICAgICAgICBpZiAoc2xvdC5jdXN0b21HZXR0ZXIoKSkKLSAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0R2V0dGVyKGdldEN1c3RvbUdldHRlckZ1bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3VzdG9tR2V0dGVyKCksIHNsb3QuZG9tQXR0cmlidXRlKCkp
KTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGNyZWF0ZUN1c3RvbUdldHRlckZ1
bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3VzdG9tR2V0
dGVyKCksIHNsb3QuZG9tQXR0cmlidXRlKCkpKTsKICAgICAgICAgaWYgKHNsb3QuY3VzdG9tU2V0
dGVyKCkpCi0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihnZXRDdXN0b21TZXR0ZXJG
dW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1c3RvbVNl
dHRlcigpKSk7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihjcmVhdGVDdXN0b21T
ZXR0ZXJGdW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1
c3RvbVNldHRlcigpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNs
b3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw5ICs0MTQsNCBAQCBpbmxp
bmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtCiAgICAgfQogfQogCi10ZW1wbGF0
ZTxSYXdOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gRW5jb2RlZEpT
VmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xv
YmFsT2JqZWN0LCBsZW5ndGgsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0
aW9uKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHJldmlzaW9uIDI3NDI3OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2
NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBXVEZNb3ZlKHZh
bHVlKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBBZGRS
ZXN1bHQgZW5zdXJlKGNvbnN0IEtleVR5cGUmIGtleSwgRnVuY3RvciYmIGZ1bmN0b3IpCisgICAg
eworICAgICAgICByZXR1cm4gbV9tYXAuZW5zdXJlKGtleSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpKTsKKyAgICB9CisKICAgICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkp
CiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXAucmVtb3ZlKGtleSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMS0wMy0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMg
LyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwgb2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBGb3IgY3Jv
c3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMsIFdpbmRvdyBhbmQgTG9jYXRpb24gb2JqZWN0
cyByZXR1cm4gZGlmZmVyZW50IEpTRnVuY3Rpb24KKyAgICAgICAgaW5zdGFuY2VzIG9uIGV2ZXJ5
IFtbR2V0XV0uIFRoZSBpbnRlbnQgd2FzIHRvIGVuc3VyZSBpc29sYXRpb24gYnkgc3VwcGx5aW5n
IGRpZmZlcmVudCBSZWFsbXMgd2l0aAorICAgICAgICBkaWZmZXJlbnQgZnVuY3Rpb24gb2JqZWN0
cy4gSG93ZXZlciwgd2l0aGluIHRoZSBzYW1lIGNhbGxlZSBSZWFsbSwgdGhpcyBtYWtlcyBzdWJz
ZXF1ZW50IGxvb2t1cHMKKyAgICAgICAgb2YgYSBjcm9zcy1vcmlnaW4gbWV0aG9kIC8gYWNjZXNz
b3IgZmFpbCByZWZlcmVuY2UgZXF1YWxpdHkgdGVzdCwgd2hpY2ggaXMgcmF0aGVyIGNvbmZ1c2lu
ZzoKKworICAgICAgICAgICAgYGNyb3NzT3JpZ2luV2luZG93LmZvY3VzID09PSBjcm9zc09yaWdp
bldpbmRvdy5mb2N1cyAvLyA9PiBmYWxzZWAKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgW1tDcm9zc09yaWdpblByb3BlcnR5RGVzY3JpcHRvck1hcF1dLCBicmluZ2luZyBjb25zaXN0
ZW50IGZ1bmN0aW9uIGlkZW50aXR5CisgICAgICAgIGFuZCBhbGlnbmluZyBXZWJLaXQgd2l0aCB0
aGUgc3BlYyBbMV0sIEJsaW5rLCBhbmQgR2Vja28uIEZvciBjb252ZW5pZW5jZSwgY2FjaGUgbWFw
cyBhcmUgYWRkZWQgdG8KKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QgKHRvIGFjY29tbW9kYXRl
IFJlbW90ZURPTVdpbmRvdykgYW5kIGNvdmVyIGJvdGggV2luZG93IGFuZCBMb2NhdGlvbiBvYmpl
Y3RzLgorCisgICAgICAgIEFzIGEgY2FjaGUgbWFwIGtleSwgYSBwYWlyIG9mIGxleGljYWwgZ2xv
YmFsIG9iamVjdCBhbmQgcmF3IGZ1bmN0aW9uIHBvaW50ZXIgaXMgdXNlZCwgd2hpY2ggZ3VhcmFu
dGVlcworICAgICAgICBjb3JyZWN0bmVzcyBldmVuIGlmIFdpbmRvdyBhbmQgTG9jYXRpb24gd291
bGQgZXhwb3NlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSBvZiB0aGUgc2FtZSBuYW1lLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyA5IGN1c3RvbSBnZXR0ZXJzLCBhZGRzIHJ1bnRpbWUgbG9v
a3VwIGZvciAic2hvd01vZGFsRGlhbG9nIiAod2hpY2ggaXMgcmFyZSksCisgICAgICAgIGFuZCBy
ZW1vdmVzIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSBleHRlbmRlZCBhdHRyaWJ1dGUgYXMgaXQn
cyBub3cgdW51c2VkIGFuZCBub24tdHJpdmlhbCB0byBnZW5lcmF0ZS4KKworICAgICAgICBBbHNv
LCBmaXhlcyBjcm9zcy1yZWFsbSBgcG9zdE1lc3NhZ2UubGVuZ3RoYCB0byBlcXVhbCAxIGFzIHBl
ciBXZWJJREwuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2Jyb3dzZXJzLmh0bWwjY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8s
LXAtKQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0
bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlQ3Jvc3NPcmlnaW5GdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlQ3Jvc3NPcmln
aW5HZXR0ZXJTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5pZGw6CisKIDIwMjEtMDMtMTEgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbnVwIHJlZmVyZW5jZXMgdG8gZmxv
YXQgYW5kIG91dC1vZi1mbG93IHJlbmRlcmVycyBiZWZvcmUgZGVzdHJveWluZyB0aGVtLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw5IEBACiAjaW5jbHVk
ZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRp
bk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ludGVy
bmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuaD4KQEAg
LTc1LDYgKzc4LDggQEAgSlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KFZNJgog
ICAgICwgbV93b3JsZChXVEZNb3ZlKHdvcmxkKSkKICAgICAsIG1fd29ybGRJc05vcm1hbChtX3dv
cmxkLT5pc05vcm1hbCgpKQogICAgICwgbV9idWlsdGluSW50ZXJuYWxGdW5jdGlvbnModm0pCisg
ICAgLCBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXAodm0pCisgICAgLCBtX2Nyb3NzT3JpZ2luR2V0
dGVyU2V0dGVyTWFwKHZtKQogewogfQogCkBAIC0yOTgsNiArMzAzLDI2IEBAIHZvaWQgSlNET01H
bG9iYWxPYmplY3Q6OmNsZWFyRE9NR3VhcmRlZE8KICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsK
IH0KIAorSlNGdW5jdGlvbiogSlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgQ3Jvc3NPcmlnaW5NYXBLZXkga2V5ID0gc3RkOjptYWtlX3BhaXIobGV4aWNh
bEdsb2JhbE9iamVjdCwgbmF0aXZlRnVuY3Rpb24ucmF3UG9pbnRlcigpKTsKKyAgICByZXR1cm4g
bV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIHJldHVy
biBKU0Z1bmN0aW9uOjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgbGV4aWNhbEds
b2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5j
dGlvbik7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCitHZXR0ZXJTZXR0ZXIq
IEpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
R2V0VmFsdWVGdW5jIGdldHRlciwgUHV0VmFsdWVGdW5jIHNldHRlcikKK3sKKyAgICBBU1NFUlQo
Z2V0dGVyIHx8IHNldHRlcik7CisgICAgQ3Jvc3NPcmlnaW5NYXBLZXkga2V5ID0gc3RkOjptYWtl
X3BhaXIobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2V0dGVyID8gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZ2V0dGVyKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNldHRlcikpOworICAgIHJldHVy
biBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwLmVuc3VyZShrZXksIFsmXSB7CisgICAgICAg
IGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgcmV0dXJuIEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LAorICAgICAgICAgICAg
Z2V0dGVyID8gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlcikgOiBudWxscHRyLAorICAgICAgICAgICAgc2V0
dGVyID8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNldHRlcikgOiBudWxscHRyKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7Cit9CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAvLyBodHRwczovL3dl
YmFzc2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNjb21waWxlLWEtcG90
ZW50aWFsLXdlYmFzc2VtYmx5LXJlc3BvbnNlCiBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgc291cmNlLCBKU0M6Oldhc206OkNvbXBpbGVyTW9kZSBjb21waWxl
ck1vZGUsIEpTQzo6SlNPYmplY3QqIGltcG9ydE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjc0Mjc5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xv
YmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9ja0R1cmluZ01hcmtpbmcuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04Myw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SlNQcm94eSYgcHJveHkoKSBjb25z
dCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuICptX3Byb3h5LmdldCgpOyB9CiAKKyAgICBKU0M6
OkpTRnVuY3Rpb24qIGNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTQzo6R2V0dGVyU2V0dGVyKiBjcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRl
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6R2V0VmFsdWVG
dW5jLCBKU0M6OlB1dFZhbHVlRnVuYyk7CisKIHB1YmxpYzoKICAgICB+SlNET01HbG9iYWxPYmpl
Y3QoKTsKIApAQCAtMTI0LDcgKzEyOCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQnVpbHRp
bkdsb2JhbHMoSlNDOjpWTSYpOwogICAgIGZyaWVuZCB2b2lkIEpTQnVpbHRpbkludGVybmFsRnVu
Y3Rpb25zOjppbml0aWFsaXplKEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKKyAgICB1c2luZyBDcm9z
c09yaWdpbk1hcEtleSA9IHN0ZDo6cGFpcjxKU0M6OkpTR2xvYmFsT2JqZWN0Kiwgdm9pZCo+Owor
CiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMgbV9idWlsdGluSW50ZXJuYWxGdW5jdGlv
bnM7CisgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXksIEpTQzo6SlNGdW5jdGlv
bj4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwOworICAgIEpTQzo6V2Vha0dDTWFwPENyb3NzT3Jp
Z2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4gbV9jcm9zc09yaWdpbkdldHRlclNldHRlck1h
cDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biAyNzQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE2ICs0OCwxNCBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRl
clNldHRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVybmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNNaWNyb3Rhc2suaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Mb29rdXAuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAKICNpZiBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogI2luY2x1ZGUgIkpTV2ViS2l0TmFtZXNwYWNlLmgi
CkBAIC02Nyw1OCArNjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uX2JsdXJOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
UmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Ns
b3NlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90
ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05v
bkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1l
c3NhZ2VOb25DYWNoaW5nKTsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfd2Via2l0KTsKICNlbmRp
ZgogCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX2JsdXJOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBu
b25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9ibHVyLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5v
bkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0
aWNGdW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXIsIDA+
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdl
dHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJ
bnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAg
ICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdp
bmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXMsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9mb2N1c05vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5v
bkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uX2ZvY3VzLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1l
c3NhZ2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNo
aW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9wb3N0TWVzc2FnZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1K
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RN
ZXNzYWdlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2Fj
aGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
cG9zdE1lc3NhZ2UsIDI+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQogdGVtcGxh
dGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0xNTcsNDUgKzEwNywzNCBAQCBib29sIGpz
RE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy8jY3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKQog
CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2UgYWxsb3cgYWNjZXNzIHRvIGNyb3Nz
LW9yaWdpbiAoRG9Ob3RDaGVja1NlY3VyaXR5IGluIElETCkuCi0gICAgLy8gQWx3YXlzIHByb3Zp
ZGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBvbiBhIGZyZXNoIHVuY2FjaGVkIGZ1bmN0aW9uIG9i
amVjdC4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5ibHVyUHVibGljTmFt
ZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUg
PyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcgOiBqc0RP
TVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQ
dWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6
OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hp
bmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLmZvY3VzUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01X
aW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9j
dXNOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGlu
Zyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09
IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90LnNl
dEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHdp
bmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcpOworICAgIGF1dG8qIGNsYXNzSW5mbyA9IHdp
bmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8gSlNSZW1vdGVET01XaW5kb3c6Omlu
Zm8oKSA6IEpTRE9NV2luZG93OjppbmZvKCk7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWls
dGluTmFtZXMuY2xvc2VQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy5mb2N1c1B1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0g
YnVpbHRpbk5hbWVzLmJsdXJQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09
IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1YmxpY05hbWUoKSkgeworICAgICAgICBhdXRvKiBl
bnRyeSA9IGNsYXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1l
KTsKKyAgICAgICAgYXV0byoganNGdW5jdGlvbiA9IHRoaXNPYmplY3QtPmNyZWF0ZUNyb3NzT3Jp
Z2luRnVuY3Rpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1
bmN0aW9uKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0sIGpzRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICAvLyBXaGVuIGFjY2Vzc2luZyBjcm9zcy1vcmlnaW4ga25vd24gV2luZG93IHByb3Bl
cnRpZXMsIHdlIGFsd2F5cyB1c2UgdGhlIG9yaWdpbmFsIHByb3BlcnR5IGdldHRlciwKICAgICAv
LyBldmVuIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcmVtb3ZlZCAvIHJlZGVmaW5lZC4gQXMgb2YgZWFy
bHkgMjAxNiwgdGhpcyBtYXRjaGVzIEZpcmVmb3ggYW5kIENocm9tZSdzCiAgICAgLy8gYmVoYXZp
b3IuCi0gICAgYXV0byogY2xhc3NJbmZvID0gd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpS
ZW1vdGUgPyBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpIDogSlNET01XaW5kb3c6OmluZm8oKTsK
LSAgICBpZiAoYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVu
dHJ5KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgLy8gT25seSBhbGxvdyBhY2Nlc3MgdG8gdGhl
c2Ugc3BlY2lmaWMgcHJvcGVydGllcy4KLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWls
dGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoCi0gICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnNlbGZQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpCi0gICAgICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZyYW1lc1B1YmxpY05hbWUoKQot
ICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNO
YW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucGFyZW50
UHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LnRvcFB1YmxpY05hbWUoKSkgewotICAgICAgICAgICAgYXV0byogZ2V0dGVyID0gSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvKiBzZXR0ZXIg
PSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpID8gSlND
dXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSkgOiBudWxscHRyOwotICAgICAgICAg
ICAgYXV0byogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7Ci0gICAgICAgICAgICBzbG90LnNldEdldHRl
clNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy53aW5k
b3dQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5z
ZWxmUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMu
bG9jYXRpb25QdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5O
YW1lcy5jbG9zZWRQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aAorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRp
bk5hbWVzLnRvcFB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRp
bk5hbWVzLm9wZW5lclB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVp
bHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKSkgeworICAgICAgICBhdXRvKiBlbnRyeSA9IGNs
YXNzSW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1
YmxpY05hbWUoKSA/IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpIDogbnVsbHB0cjsKKyAgICAgICAg
YXV0byogZ2V0dGVyU2V0dGVyID0gdGhpc09iamVjdC0+Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJT
ZXR0ZXIoJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5
R2V0dGVyKCksIHNldHRlcik7CisgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzT2JqZWN0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0sIGdldHRlclNldHRlcik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IENoZWNrIGZvciBjaGlsZCBmcmFtZXMgYnkgbmFtZSBiZWZvcmUgYnVpbHQtaW4gcHJvcGVydGll
cyB0byBtYXRjaCBNb3ppbGxhLiBUaGlzIGRvZXMKQEAgLTI2NSw3ICsyMDQsNyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgICAgIC8vIERldGVjdCB3aGVu
IHdlJ3JlIGdldHRpbmcgdGhlIHByb3BlcnR5ICdzaG93TW9kYWxEaWFsb2cnLCB0aGlzIGlzIGRp
c2FibGVkLCBhbmQgaGFzIGl0cyBvcmlnaW5hbCB2YWx1ZS4KICAgICAgICAgYm9vbCBpc1Nob3dN
b2RhbERpYWxvZ0FuZFNob3VsZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5zaG93TW9kYWxEaWFsb2dQdWJsaWNOYW1lKCkKICAgICAgICAgICAgICYmICgh
ZnJhbWUgfHwgIURPTVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nKCpmcmFtZSkpCi0gICAgICAg
ICAgICAmJiBzbG90LmlzVmFsdWUoKSAmJiBpc0hvc3RGdW5jdGlvbihzbG90LmdldFZhbHVlKGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSksIGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9zaG93TW9kYWxEaWFsb2cpOworICAgICAgICAgICAgJiYgc2xvdC5pc1ZhbHVlKCkgJiYg
aXNIb3N0RnVuY3Rpb24oc2xvdC5nZXRWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpLCBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKS0+
ZnVuY3Rpb24oKSk7CiAgICAgICAgIC8vIFVubGVzcyB3ZSdyZSBpbiB0aGUgc2hvd01vZGFsRGlh
bG9nIHNwZWNpYWwgY2FzZSwgd2UncmUgZG9uZS4KICAgICAgICAgaWYgKCFpc1Nob3dNb2RhbERp
YWxvZ0FuZFNob3VsZEhpZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyNzQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMjEgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01X
aW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
R2V0dGVyU2V0dGVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNM
b2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOwotCi1KU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5j
dGlvbkdldHRlckltcGw8anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZSwgMT4oZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCiBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RDb21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CkBAIC02NCw3
ICs1NSw5IEBAIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKIAogICAg
IC8vIFdlIG9ubHkgYWxsb3cgYWNjZXNzIHRvIExvY2F0aW9uLnJlcGxhY2UoKSBjcm9zcyBvcmln
aW4uCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlKSB7
Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKCZ0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwganNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOworICAg
ICAgICBhdXRvKiBlbnRyeSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJs
ZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0byoganNGdW5jdGlvbiA9IHRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCktPmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oJmxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5mdW5j
dGlvbkxlbmd0aCgpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSgmdGhpc09iamVjdCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc0Z1
bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC03Miw4ICs2NSw3IEBA
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKICAgICAvLyBhIGRlc2Ny
aXB0b3IgdGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5vIGdldHRlci4KICAgICBpZiAoc2xvdC5pbnRl
cm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKICAg
ICAgICAgYXV0byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFi
bGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGF1dG8qIHNldHRlciA9IEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0
ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIG51bGxw
dHIsIHNldHRlcik7CisgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCktPmNyZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG51bGxwdHIsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsK
ICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzQyNzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMzA2Niw5ICszMDY2LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgbXkgJG51bUN1c3RvbU9wZXJhdGlvbnMgPSAwOwogICAgIG15ICRudW1DdXN0b21BdHRyaWJ1
dGVzID0gMDsKIAotICAgIG15ICRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucyA9IDA7Ci0g
ICAgbXkgJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVzID0gMDsKLQogICAgIG15ICRoYXNE
T01KSVRBdHRyaWJ1dGVzID0gMDsKIAogICAgICMgQXR0cmlidXRlIGFuZCBmdW5jdGlvbiBlbnVt
cwpAQCAtMzA4NCw4ICszMDgxLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJGhhc0RPTUpJVEF0dHJpYnV0ZXMgPSAxIGlm
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07Ci0KLSAgICAgICAgICAg
ICRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTMxNDQsNyArMzEzOSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgZm9yZWFj
aCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgICRu
dW1DdXN0b21PcGVyYXRpb25zKysgaWYgSGFzQ3VzdG9tTWV0aG9kKCRvcGVyYXRpb24pOwotICAg
ICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAxIGlmICRvcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgIH0KIAogICAg
IGlmICgkbnVtQ3VzdG9tT3BlcmF0aW9ucyA+IDApIHsKQEAgLTMyNzAsNTIgKzMyNjQsNiBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBo
ZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBIZWFkZXJOZWVkc1Byb3Rv
dHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCi0gICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFy
aW5nT3BlcmF0aW9ucykgewotICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKLSAgICAgICAgZm9y
ZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7Ci0gICAgICAg
ICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57
b3ZlcmxvYWRJbmRleH0gPiAxOwotICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07Ci0KLSAgICAgICAg
ICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0p
IHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVh
ZGVyRmlsZXMpOwotICAgICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHQp
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmln
aHQpOwotICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0Q29uZGl0aW9u
YWxGb3JPcGVyYXRpb25Db25zaWRlcmluZ092ZXJsb2Fkcygkb3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRj
b25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTigke2Z1bmN0aW9uTmFtZX0pO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAk
ZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCJcbiIpOwotICAgIH0KLQotICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmlu
Z0F0dHJpYnV0ZXMpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gQXR0cmlidXRl
c1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0
dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKLQotICAgICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmcoJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAg
ICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKCR7Z2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgIGlm
ICghSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
LSAgICAgICAgfQotICAgIH0KLQogICAgICMgQ2hlY2tKU0Nhc3QgU25pcHBldCBmdW5jdGlvbi4K
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgewogICAg
ICAgICAkaGVhZGVySW5jbHVkZXN7IjxKYXZhU2NyaXB0Q29yZS9TbmlwcGV0Lmg+In0gPSAxOwpA
QCAtNDMwNyw3ICs0MjU1LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBt
eSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgICAgICBu
ZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3Zlcmxv
YWRJbmRleH0gPiAxOwotICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5leHQgaWYg
SXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBuZXh0IGlm
ICRvcGVyYXRpb24tPm5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKIApAQCAtNDM1Myw3ICs0
MzAwLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogCiAgICAgICAg
IGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAg
ICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJk
RGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLmpzb24JKHJldmlzaW9uIDI3NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOSArMjIzLDYg
QEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI0V4cG9zZWQiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJGb3J3YXJk
RGVjbGFyZUluSGVhZGVyIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0
cmlidXRlIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCiAgICAgICAgICJHZW5lcmF0ZUlzUmVh
Y2hhYmxlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0s
CiAgICAgICAgICAgICAidmFsdWVzIjogWyIiLCAiSW1wbCIsICJJbXBsV2ViR0xSZW5kZXJpbmdD
b250ZXh0IiwgIkltcGxDYW52YXNCYXNlIiwgIkltcGxEb2N1bWVudCIsICJJbXBsRWxlbWVudFJv
b3QiLCAiSW1wbE93bmVyTm9kZVJvb3QiLCAiSW1wbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAi
UmVhY2hhYmxlRnJvbURPTVdpbmRvdyIsICJSZWFjaGFibGVGcm9tTmF2aWdhdG9yIl0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NDI3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTEgKzYyLDEx
IEBACiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCBzdGF0dXNi
YXI7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCB0b29sYmFy
OwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3RhdHVzOwotICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIENhbGxXaXRoPUluY3VtYmVudERvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1
bmRlZmluZWQgY2xvc2UoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CisgICAgW0RvTm90
Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9z
ZSgpOworICAgIFtEb05vdENoZWNrU2VjdXJpdHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGNsb3NlZDsKICAgICB1bmRlZmluZWQgc3RvcCgpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHks
IENhbGxXaXRoPUluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZp
bmVkIGZvY3VzKCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhl
YWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0
aD1JbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5lZCBmb2N1cygpOworICAgIFtEb05vdENoZWNrU2Vj
dXJpdHldIHVuZGVmaW5lZCBibHVyKCk7CiAKICAgICAvLyBvdGhlciBicm93c2luZyBjb250ZXh0
cwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdl
dHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGZyYW1lczsKQEAgLTkxLDggKzkx
LDggQEAKICAgICBET01TdHJpbmc/IHByb21wdChvcHRpb25hbCBET01TdHJpbmcgbWVzc2FnZSA9
ICIiLCBvcHRpb25hbCBET01TdHJpbmcgZGVmYXVsdFZhbHVlID0gIiIpOwogICAgIHVuZGVmaW5l
ZCBwcmludCgpOwogCi0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3cs
IERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdl
dE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKLSAgICBb
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5
LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBv
c3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQb3N0TWVzc2FnZU9wdGlvbnMg
b3B0aW9ucyk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERv
Tm90Q2hlY2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2Fn
ZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3Vt
YmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZp
bmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQb3N0TWVzc2FnZU9w
dGlvbnMgb3B0aW9ucyk7CiAKIAogICAgIC8vIE9ic29sZXRlOiBTdGlsbCBwYXJ0IG9mIHRoZSBI
VE1MIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI1dpbmRvdy1w
YXJ0aWFsKS4KQEAgLTExOSw3ICsxMTksNyBAQAogICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRp
b25hbD1JT1NfR0VTVFVSRV9FVkVOVFNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25nZXN0dXJl
c3RhcnQ7CiAKICAgICAvLyBOb24tc3RhbmRhcmQ6IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9t
IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gYW5kIGJ5IG90aGVyIGJyb3dzZXJzLgotICAgIFtDdXN0
b20sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5n
IHVybCwgb3B0aW9uYWwgYW55IGRpYWxvZ0FyZ3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJl
QXJncyk7CisgICAgW0N1c3RvbV0gYW55IHNob3dNb2RhbERpYWxvZyhET01TdHJpbmcgdXJsLCBv
cHRpb25hbCBhbnkgZGlhbG9nQXJncywgb3B0aW9uYWwgRE9NU3RyaW5nIGZlYXR1cmVBcmdzKTsK
IAogICAgIC8vIE5vbi1zdGFuZGFyZDogc2hvdWxkIHByb2JhYmx5IGRlcHJlY2F0ZSB0aGlzICho
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NTMpLgogICAgIC8vIEJs
aW5rIGFscmVhZHkgZGVwcmVjYXRlZCBpdCAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2No
cm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDM3NTY5KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmlkbAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogICAgIGF0dHJpYnV0ZSBTY3JvbGxS
ZXN0b3JhdGlvbiBzY3JvbGxSZXN0b3JhdGlvbjsKICAgICBbQ3VzdG9tXSByZWFkb25seSBhdHRy
aWJ1dGUgYW55IHN0YXRlOwogCi0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyXSB1bmRlZmluZWQgYmFjaygpOwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9y
d2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvcndhcmQoKTsKLSAgICBbQ2FsbFdpdGg9
RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBnbyhvcHRpb25hbCBs
b25nIGRlbHRhID0gMCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgYmFjaygp
OworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGZvcndhcmQoKTsKKyAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBnbyhvcHRpb25hbCBsb25nIGRlbHRhID0gMCk7CiAK
ICAgICAvLyBGSVhNRTogdGl0bGUgc2hvdWxkIG5vdCBiZSBudWxsYWJsZSBhcyBwZXIgdGhlIEhU
TUwgc3BlY2lmaWNhdGlvbi4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwdXNo
U3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8gdGl0bGUsIG9wdGlv
bmFsIFVTVlN0cmluZz8gdXJsID0gbnVsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlk
bAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsK
ICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwog
Ci0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRp
b24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVy
bCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0
V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZp
bmVkIHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7Ci0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdywg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIHJlbG9hZCgpOworICAgIFtDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQg
YXNzaWduKFVTVlN0cmluZyB1cmwpOworICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRo
PUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBy
ZXBsYWNlKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVuZGVm
aW5lZCByZWxvYWQoKTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKICAg
ICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNW
U3RyaW5nIHByb3RvY29sOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5k
b3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93
LmlkbAkocmV2aXNpb24gMjc0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTQgQEAKICAgICBbTGVnYWN5
VW5mb3JnZWFibGUsIEltcGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IHdpbmRvdzsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5k
b3dQcm94eSBzZWxmOwogICAgIFtQdXRGb3J3YXJkcz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0g
cmVhZG9ubHkgYXR0cmlidXRlIExvY2F0aW9uPyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBu
b3QgYmUgbnVsbGFibGUuCi0gICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50LCBGb3J3YXJk
RGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgY2xvc2UoKTsKLSAgICBbRm9yd2FyZERlY2xhcmVJ
bkhlYWRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOwotICAgIFtDYWxsV2l0
aD1JbmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1
cygpOwotICAgIFtGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgYmx1cigpOworICAg
IFtDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudF0gdW5kZWZpbmVkIGNsb3NlKCk7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRX
aW5kb3ddIHVuZGVmaW5lZCBmb2N1cygpOworICAgIHVuZGVmaW5lZCBibHVyKCk7CiAgICAgW1Jl
cGxhY2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQ
cm94eSBmcmFtZXM7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsZW5ndGg7CiAgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgV2luZG93UHJveHk/IHRvcDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IG9wZW5lcjsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94
eT8gcGFyZW50OwotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBG
b3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2Us
IFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNm
ZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3ddIHVu
ZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwg
b3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzQyNzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMy0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nl
c3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwgb2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbDoK
KwogMjAyMS0wMy0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFudXAgcmVmZXJlbmNlcyB0byBmbG9hdCBhbmQgb3V0LW9mLWZsb3cgcmVuZGVyZXJzIGJl
Zm9yZSBkZXN0cm95aW5nIHRoZW0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1v
cGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc0Mjc5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5jbG9zZSBpcyBhbiBpbnN0YW5j
ZSBvZiBGdW5jdGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQ
QVNTIHcuYmx1ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LnBvc3RNZXNzYWdl
IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xvc2UgaXMgdy5jbG9zZQorUEFT
UyB3LmZvY3VzIGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcuYmx1cgorUEFTUyB3LnBvc3RN
ZXNzYWdlIGlzIHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVzc2FnZS5sZW5ndGggaXMgMQog
UEFTUyB3LnBvc3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
IFBBU1Mgdy5mb2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB3LmJsdXIoKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0
bWwJKHJldmlzaW9uIDI3NDI3OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsMTEgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBzaG91bGRCZVR5cGUoIncuZm9jdXMi
LCAiRnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVR5cGUoIncuYmx1ciIsICJGdW5jdGlvbiIpOwog
ICAgIHNob3VsZEJlVHlwZSgidy5wb3N0TWVzc2FnZSIsICJGdW5jdGlvbiIpOworICAgIHNob3Vs
ZEJlKCJ3LmNsb3NlIiwgIncuY2xvc2UiKTsKKyAgICBzaG91bGRCZSgidy5mb2N1cyIsICJ3LmZv
Y3VzIik7CisgICAgc2hvdWxkQmUoIncuYmx1ciIsICJ3LmJsdXIiKTsKKyAgICBzaG91bGRCZSgi
dy5wb3N0TWVzc2FnZSIsICJ3LnBvc3RNZXNzYWdlIik7CisgICAgc2hvdWxkQmUoIncucG9zdE1l
c3NhZ2UubGVuZ3RoIiwgIjEiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5wb3N0TWVzc2FnZSgn
dGVzdCcsICcqJykiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5mb2N1cygpIik7CiAgICAgc2hv
dWxkTm90VGhyb3coIncuYmx1cigpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NDI3OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0xMSAgQWxleGV5IFNo
dmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3Jp
Z2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNh
bCBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWNhY2hpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
LWZ1bmN0aW9uLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFt
ZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMy0xMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGludGVy
cG9sYXRpb24KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
YWNoaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmctZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENyb3NzLW9yaWdpbiBX
aW5kb3cgbWV0aG9kcyBhcmUgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNz
b3JzIGFyZSBjYWNoZWQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRo
b2QgaXMgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGlz
IGNhY2hlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0
bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY2FjaGVkIHBlciBSZWFs
bSB2aWFbW0Nyb3NzT3JpZ2luUHJvcGVydHlEZXNjcmlwdG9yTWFwXV08L3RpdGxlPgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9i
cm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8
ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93
KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzKSB7
CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLCB3W2tleV0sIGB3LiR7a2V5fSB2aWEgW1tH
ZXRdXWApOworICAgICAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEudmFsdWUs
IGRlc2MyLnZhbHVlLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0K
K30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgYXJlIGNhY2hlZCIpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldp
bmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93QWNjZXNz
b3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih3LCBrZXkpOworICAgICAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS5nZXQsIGRl
c2MyLmdldCwgYHcuJHtrZXl9IGdldHRlcmApOworICAgICAgICBpZiAoa2V5ID09PSAibG9jYXRp
b24iKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnNldCwgZGVzYzIuc2V0LCBg
dy4ke2tleX0gc2V0dGVyYCk7CisgICAgICAgIH0KKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdp
bmRvdyBhY2Nlc3NvcnMgYXJlIGNhY2hlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHcubG9jYXRpb24ucmVwbGFjZSwgdy5sb2NhdGlvbi5yZXBsYWNlLCAidmlhIFtb
R2V0XV0iKTsKKyAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwgInZpYSBbW0dldE93blByb3BlcnR5XV0i
KTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBpcyBjYWNoZWQi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtl
Q3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgY29uc3QgZGVzYzIgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAg
YXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29t
bW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mt
b3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29t
bW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKyJ1c2Ugc3RyaWN0IjsKKwor
Y29uc3QgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzID0gWworICAgIHtrZXk6ICJjbG9zZSIsIGxl
bmd0aDogMH0sCisgICAge2tleTogImZvY3VzIiwgbGVuZ3RoOiAwfSwKKyAgICB7a2V5OiAiYmx1
ciIsIGxlbmd0aDogMH0sCisgICAge2tleTogInBvc3RNZXNzYWdlIiwgbGVuZ3RoOiAxfSwKK107
CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3JzID0gWworICAgICJ3aW5kb3ciLAor
ICAgICJzZWxmIiwKKyAgICAibG9jYXRpb24iLAorICAgICJjbG9zZWQiLAorICAgICJmcmFtZXMi
LAorICAgICJsZW5ndGgiLAorICAgICJ0b3AiLAorICAgICJvcGVuZXIiLAorICAgICJwYXJlbnQi
LAorXS5tYXAoa2V5ID0+ICh7a2V5fSkpOworCitjb25zdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3cg
PSB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKKyAgICBjb25zdCBwYXRoID0gbG9jYXRpb24ucGF0aG5hbWUuc2xpY2UoMCwgbG9jYXRp
b24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSkgKyAiL2ZyYW1lLmh0bWwiOworICAgIGlmcmFt
ZS5zcmMgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsgcGF0aDsKKworICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGlmcmFt
ZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUoaWZyYW1lLmNvbnRlbnRXaW5kb3cpOyB9OworICAg
ICAgICBpZnJhbWUub25lcnJvciA9IHJlamVjdDsKKworICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZChpZnJhbWUpOworICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHsgaWZyYW1lLnJlbW92
ZSgpOyB9KTsKKyAgICB9KTsKK307CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3Ro
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9z
cy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnCitQQVNTIENyb3Nz
LW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9z
cy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbGVuZ3RoJwor
UEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbGVu
Z3RoJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jv
c3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3Qg
J2xlbmd0aCcgcHJvcGVydHk8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2lu
Z2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3Qt
aW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9yaWdpbi1vYmplY3Rz
LWZ1bmN0aW9uLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25z
dCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tl
eSwgbGVuZ3RofSBvZiBjcm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyh3W2tleV0ubGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOwor
ICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBr
ZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCBsZW5ndGgsIGB3
LiR7a2V5fSB2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dYCk7CisgICAgfQorfSwgIkNyb3NzLW9yaWdp
biBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3co
dCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykg
eworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwgMCwgYHcuJHtr
ZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCBgdy4ke2tleX1gKTsKKyAgICAgICAgfQor
ICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ2xl
bmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2Fp
dCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9u
LnJlcGxhY2UubGVuZ3RoLCAxKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFzc2VydF9lcXVhbHMo
ZGVzYy52YWx1ZS5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFj
ZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAg
IGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24s
ICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5sZW5ndGgsIDEpOworfSwgIkNy
b3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1u
YW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cg
bWV0aG9kcyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNj
ZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZScKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBy
ZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICduYW1lJworCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29y
cyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ25hbWUnIHByb3BlcnR5PC90aXRsZT4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
YnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0Pgor
PGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRv
dyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcykg
eworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XS5uYW1lLCBrZXksIGB3LiR7a2V5fSB2aWEg
W1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwg
a2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9z
cy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJyIpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldp
bmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93QWNjZXNz
b3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubmFtZSwgYGdldCAk
e2tleX1gKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxvY2F0aW9uIikgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhkZXNjLnNldC5uYW1lLCBgc2V0ICR7a2V5fWApOworICAgICAgICB9Cisg
ICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFt
ZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBt
YWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJl
cGxhY2UubmFtZSwgInJlcGxhY2UiKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFzc2VydF9lcXVh
bHMoZGVzYy52YWx1ZS5uYW1lLCAicmVwbGFjZSIpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlv
biBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0
KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3Lmxv
Y2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFtZSwgInNldCBo
cmVmIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJl
Y3QgJ25hbWUnIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422986</attachid>
            <date>2021-03-11 16:12:52 -0800</date>
            <delta_ts>2021-03-13 00:58:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210312021250.patch</filename>
            <type>text/plain</type>
            <size>56250</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0MzA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDIxLTAzLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDEuIEFkZCBXZWFrR0NNYXA6OmVuc3VyZSgpIHRv
IGF2b2lkIGRvdWJsZSBoYXNoaW5nIGFuZCBjbGVhbiB1cCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCkuCisgICAgICAgIDIuIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dl
dHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMgY3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBv
aW50ZXIuCisgICAgICAgIDMuIFJlbmFtZSBnZXRDdXN0b217R2V0dGVyLFNldHRlcn1GdW5jdGlv
bigpIHRvIGFsaWduIHdpdGggbmV3bHktYWRkZWQgSlNET01HbG9iYWxPYmplY3QgbWV0aG9kcy4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVy
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAoSlNDOjpnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmdldEN1c3RvbVNldHRlckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorCiAyMDIxLTAzLTEx
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBBbGln
biBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoKSB3aXRoIHRoZSBzcGVjIGFuZCBv
dGhlciBydW50aW1lcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3NDMwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihjdXN0b21HZXR0ZXJGdW4KIAogICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdl
dHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKLQogICAgIEdldFZhbHVlRnVuYyBnZXR0ZXIgPSBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+
Z2V0dGVyKCk7Ci0gICAgQVNTRVJUKGdldHRlcik7CiAKICAgICBpZiAoYXV0byBkb21BdHRyaWJ1
dGUgPSBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+ZG9tQXR0cmlidXRlKCkpIHsKICAgICAgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvKSkKQEAgLTYy
LDYgKzYwLDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6SlNDdXN0b21HZXR0ZXJGdQogCiBK
U0N1c3RvbUdldHRlckZ1bmN0aW9uKiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldHRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5u
b3RhdGlvbj4gZG9tQXR0cmlidXRlKQogeworICAgIEFTU0VSVChnZXR0ZXIpOwogICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVy
RnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKHZtLCBl
eGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIs
IGRvbUF0dHJpYnV0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1
c3RvbVNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc0MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oY3VzdG9tUwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbVNldHRl
ckZ1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKIHsKICAgICBQdXRWYWx1ZUZ1bmMgc2V0dGVyID0ganNDYXN0PEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5zZXR0ZXIoKTsKLSAgICBB
U1NFUlQoc2V0dGVyKTsKICAgICBzZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUo
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTQ5LDYgKzQ4LDcgQEAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6SlNDdXN0b21TZXR0ZXJG
dQogCiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSwgUHV0VmFsdWVGdW5jIHNldHRlcikKIHsKKyAgICBBU1NFUlQoc2V0
dGVyKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0
aW9uKGN1c3RvbVNldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0
b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7
CiAgICAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21TZXR0
ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHNldHRl
cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNzQzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MjEsMjQgKzM1MjEsMTggQEAgQnV0dGVyZmx5KiBK
U09iamVjdDo6YWxsb2NhdGVNb3JlT3V0T2ZMaQogICAgIHJldHVybiBCdXR0ZXJmbHk6OmNyZWF0
ZU9yR3Jvd1Byb3BlcnR5U3RvcmFnZShidXR0ZXJmbHkoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSh2
bSksIG9sZFNpemUsIG5ld1NpemUpOwogfQogCi1zdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlv
biogZ2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgT3B0
aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorc3RhdGljIEpTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVu
YyBnZXRWYWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJp
YnV0ZSkKIHsKLSAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJGdW5jdGlv
biA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5nZXQoZ2V0VmFsdWVG
dW5jKTsKLSAgICBpZiAoIWN1c3RvbUdldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAgIGN1c3RvbUdl
dHRlckZ1bmN0aW9uID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFZhbHVlRnVuYywgZG9tQXR0
cmlidXRlKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgp
LnNldChnZXRWYWx1ZUZ1bmMsIGN1c3RvbUdldHRlckZ1bmN0aW9uKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGN1c3RvbUdldHRlckZ1bmN0aW9uOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmN1c3Rv
bUdldHRlckZ1bmN0aW9uTWFwKCkuZW5zdXJlKGdldFZhbHVlRnVuYywgWyZdIHsKKyAgICAgICAg
cmV0dXJuIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRWYWx1ZUZ1bmMsIGRvbUF0dHJpYnV0ZSk7
CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCi1zdGF0aWMgSlNDdXN0b21TZXR0
ZXJGdW5jdGlvbiogZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHV0VmFsdWVGdW5jIHB1dFZhbHVl
RnVuYykKK3N0YXRpYyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBjcmVhdGVDdXN0b21TZXR0ZXJG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWVGdW5jKQogewotICAgIEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24qIGN1c3RvbVNldHRlckZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0
ZXJGdW5jdGlvbk1hcCgpLmdldChwdXRWYWx1ZUZ1bmMpOwotICAgIGlmICghY3VzdG9tU2V0dGVy
RnVuY3Rpb24pIHsKLSAgICAgICAgY3VzdG9tU2V0dGVyRnVuY3Rpb24gPSBKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgcHV0VmFsdWVGdW5jKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0
ZXJGdW5jdGlvbk1hcCgpLnNldChwdXRWYWx1ZUZ1bmMsIGN1c3RvbVNldHRlckZ1bmN0aW9uKTsK
LSAgICB9Ci0gICAgcmV0dXJuIGN1c3RvbVNldHRlckZ1bmN0aW9uOworICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuZW5zdXJlKHB1dFZhbHVlRnVuYywg
WyZdIHsKKyAgICAgICAgcmV0dXJuIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBwdXRWYWx1ZUZ1bmMp
OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogYm9vbCBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAg
LTM1NTksOSArMzU1Myw5IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cigKICAgICAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3IoKHNsb3QuYXR0cmli
dXRlcygpIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSAmIH5Qcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogc2xvdEJhc2VHbG9i
YWxPYmplY3QgPSBzbG90LnNsb3RCYXNlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIGlm
IChzbG90LmN1c3RvbUdldHRlcigpKQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIo
Z2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdC5jdXN0b21HZXR0ZXIoKSwgc2xvdC5kb21BdHRyaWJ1dGUoKSkpOworICAgICAgICAg
ICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoY3JlYXRlQ3VzdG9tR2V0dGVyRnVuY3Rpb24oc2xvdEJh
c2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21HZXR0ZXIoKSwgc2xvdC5k
b21BdHRyaWJ1dGUoKSkpOwogICAgICAgICBpZiAoc2xvdC5jdXN0b21TZXR0ZXIoKSkKLSAgICAg
ICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGdldEN1c3RvbVNldHRlckZ1bmN0aW9uKHNsb3RC
YXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3VzdG9tU2V0dGVyKCkpKTsKKyAg
ICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGNyZWF0ZUN1c3RvbVNldHRlckZ1bmN0aW9u
KHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3VzdG9tU2V0dGVyKCkp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CShyZXZpc2lvbiAyNzQzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDE0LDkgKzQxNCw0IEBAIGlubGluZSB2b2lkIHJlaWZ5
U3RhdGljUHJvcGVydGllcyhWTSYgdm0KICAgICB9CiB9CiAKLXRlbXBsYXRlPFJhd05hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBFbmNvZGVkSlNWYWx1ZSBub25DYWNo
aW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGxl
bmd0aCwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXAuaAkocmV2aXNpb24gMjc0MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIFdURk1vdmUodmFsdWUpKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIEFkZFJlc3VsdCBlbnN1cmUo
Y29uc3QgS2V5VHlwZSYga2V5LCBGdW5jdG9yJiYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX21hcC5lbnN1cmUoa2V5LCBzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwor
ICAgIH0KKwogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX21hcC5yZW1vdmUoa2V5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
NDMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU1IEBACisyMDIxLTAzLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KKworICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBv
ZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEZvciBjcm9zcy1vcmlnaW4gbWV0
aG9kcyAvIGFjY2Vzc29ycywgV2luZG93IGFuZCBMb2NhdGlvbiBvYmplY3RzIHJldHVybiBkaWZm
ZXJlbnQgSlNGdW5jdGlvbgorICAgICAgICBpbnN0YW5jZXMgb24gZXZlcnkgW1tHZXRdXS4gVGhl
IGludGVudCB3YXMgdG8gZW5zdXJlIGlzb2xhdGlvbiBieSBzdXBwbHlpbmcgZGlmZmVyZW50IFJl
YWxtcyB3aXRoCisgICAgICAgIGRpZmZlcmVudCBmdW5jdGlvbiBvYmplY3RzLiBIb3dldmVyLCB3
aXRoaW4gdGhlIHNhbWUgY2FsbGVlIFJlYWxtLCB0aGlzIG1ha2VzIHN1YnNlcXVlbnQgbG9va3Vw
cworICAgICAgICBvZiBhIGNyb3NzLW9yaWdpbiBtZXRob2QgLyBhY2Nlc3NvciBmYWlsIHJlZmVy
ZW5jZSBlcXVhbGl0eSB0ZXN0LCB3aGljaCBpcyByYXRoZXIgY29uZnVzaW5nOgorCisgICAgICAg
ICAgICBgY3Jvc3NPcmlnaW5XaW5kb3cuZm9jdXMgPT09IGNyb3NzT3JpZ2luV2luZG93LmZvY3Vz
IC8vID0+IGZhbHNlYAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBbW0Nyb3NzT3Jp
Z2luUHJvcGVydHlEZXNjcmlwdG9yTWFwXV0sIGJyaW5naW5nIGNvbnNpc3RlbnQgZnVuY3Rpb24g
aWRlbnRpdHkKKyAgICAgICAgYW5kIGFsaWduaW5nIFdlYktpdCB3aXRoIHRoZSBzcGVjIFsxXSwg
QmxpbmssIGFuZCBHZWNrby4gRm9yIGNvbnZlbmllbmNlLCBjYWNoZSBtYXBzIGFyZSBhZGRlZCB0
bworICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCAodG8gYWNjb21tb2RhdGUgUmVtb3RlRE9NV2lu
ZG93KSBhbmQgY292ZXIgYm90aCBXaW5kb3cgYW5kIExvY2F0aW9uIG9iamVjdHMuCisKKyAgICAg
ICAgQXMgYSBjYWNoZSBtYXAga2V5LCBhIHBhaXIgb2YgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGFu
ZCByYXcgZnVuY3Rpb24gcG9pbnRlciBpcyB1c2VkLCB3aGljaCBndWFyYW50ZWVzCisgICAgICAg
IGNvcnJlY3RuZXNzIGV2ZW4gaWYgV2luZG93IGFuZCBMb2NhdGlvbiB3b3VsZCBleHBvc2UgY3Jv
c3Mtb3JpZ2luIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIDkgY3VzdG9tIGdldHRlcnMsIGFkZHMgcnVudGltZSBsb29rdXAgZm9yICJzaG93
TW9kYWxEaWFsb2ciICh3aGljaCBpcyByYXJlKSwKKyAgICAgICAgYW5kIHJlbW92ZXMgW0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhcyBpdCdzIG5vdyB1bnVzZWQg
YW5kIG5vbi10cml2aWFsIHRvIGdlbmVyYXRlLgorCisgICAgICAgIEFsc28sIGZpeGVzIGNyb3Nz
LXJlYWxtIGBwb3N0TWVzc2FnZS5sZW5ndGhgIHRvIGVxdWFsIDEgYXMgcGVyIFdlYklETC4KKwor
ICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3Nl
cnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pCisKKyAgICAg
ICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
cmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24t
Y2FjaGluZy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRPd25Q
cm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5q
c29uOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0hpc3Rv
cnkuaWRsOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRE9NV2luZG93LmlkbDoKKwogMjAyMS0wMy0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgQWxpZ24gSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KCkgd2l0aCB0aGUgc3BlYyBhbmQgb3RoZXIgcnVudGltZXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDI3NDMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsMTMgQEAKICNpbmNsdWRlICJXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1
c3RvbUdldHRlckZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9t
aXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxlci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTc1LDYgKzc5LDggQEAgSlNET01HbG9iYWxPYmpl
Y3Q6OkpTRE9NR2xvYmFsT2JqZWN0KFZNJgogICAgICwgbV93b3JsZChXVEZNb3ZlKHdvcmxkKSkK
ICAgICAsIG1fd29ybGRJc05vcm1hbChtX3dvcmxkLT5pc05vcm1hbCgpKQogICAgICwgbV9idWls
dGluSW50ZXJuYWxGdW5jdGlvbnModm0pCisgICAgLCBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXAo
dm0pCisgICAgLCBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwKHZtKQogewogfQogCkBAIC0y
OTgsNiArMzA0LDI2IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmNsZWFyRE9NR3VhcmRlZE8K
ICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKIH0KIAorSlNGdW5jdGlvbiogSlNET01HbG9iYWxP
YmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5h
dGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQ3Jvc3NPcmlnaW5NYXBLZXkg
a2V5ID0gc3RkOjptYWtlX3BhaXIobGV4aWNhbEdsb2JhbE9iamVjdCwgbmF0aXZlRnVuY3Rpb24u
cmF3UG9pbnRlcigpKTsKKyAgICByZXR1cm4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwLmVuc3Vy
ZShrZXksIFsmXSB7CisgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbik7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOworfQorCitHZXR0ZXJTZXR0ZXIqIEpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9z
c09yaWdpbkdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldHRlciwgUHV0VmFsdWVG
dW5jIHNldHRlcikKK3sKKyAgICBBU1NFUlQoZ2V0dGVyIHx8IHNldHRlcik7CisgICAgQ3Jvc3NP
cmlnaW5NYXBLZXkga2V5ID0gc3RkOjptYWtlX3BhaXIobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2V0
dGVyID8gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0dGVyKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHNldHRlcikpOworICAgIHJldHVybiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFw
LmVuc3VyZShrZXksIFsmXSB7CisgICAgICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICAgICAgcmV0dXJuIEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgZ2V0dGVyID8gSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlcikg
OiBudWxscHRyLAorICAgICAgICAgICAgc2V0dGVyID8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNldHRlcikgOiBu
dWxscHRyKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAvLyBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1h
cGkvaW5kZXguaHRtbCNjb21waWxlLWEtcG90ZW50aWFsLXdlYmFzc2VtYmx5LXJlc3BvbnNlCiBz
dGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgc291cmNlLCBKU0M6
Oldhc206OkNvbXBpbGVyTW9kZSBjb21waWxlck1vZGUsIEpTQzo6SlNPYmplY3QqIGltcG9ydE9i
amVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gMjc0MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9j
a0R1cmluZ01hcmtpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXAuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAg
IEpTQzo6SlNQcm94eSYgcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuICpt
X3Byb3h5LmdldCgpOyB9CiAKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGNyZWF0ZUNyb3NzT3JpZ2lu
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6Ok5h
dGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTQzo6R2V0dGVyU2V0dGVyKiBj
cmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6R2V0VmFsdWVGdW5jLCBKU0M6OlB1dFZhbHVlRnVuYyk7CisKIHB1
YmxpYzoKICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIApAQCAtMTI0LDcgKzEyOCwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkQnVpbHRpbkdsb2JhbHMoSlNDOjpWTSYpOwogICAgIGZyaWVu
ZCB2b2lkIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zOjppbml0aWFsaXplKEpTRE9NR2xvYmFs
T2JqZWN0Jik7CiAKKyAgICB1c2luZyBDcm9zc09yaWdpbk1hcEtleSA9IHN0ZDo6cGFpcjxKU0M6
OkpTR2xvYmFsT2JqZWN0Kiwgdm9pZCo+OworCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlv
bnMgbV9idWlsdGluSW50ZXJuYWxGdW5jdGlvbnM7CisgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NP
cmlnaW5NYXBLZXksIEpTQzo6SlNGdW5jdGlvbj4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwOwor
ICAgIEpTQzo6V2Vha0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4g
bV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIENvbnN0
cnVjdG9yQ2xhc3M+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNzQzMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEy
ICs0OCw5IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZXJuYWxG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU01pY3Jv
dGFzay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvb2t1cC5oPgpAQCAtNjcsNTggKzY0
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9v
cGVuRGF0YWJhc2UpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2Fj
aGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcp
Owotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VG
dW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGlu
Zyk7CiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X3dlYmtpdCk7CiAjZW5kaWYKIAotSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9u
Q2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRp
Y0Z1bmN0aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1
ciwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyLCAwPihnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURP
TVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
KQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVt
b3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICBy
ZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fY2xvc2UsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQot
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlv
bl9mb2N1c05vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNh
Y2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX2ZvY3VzLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25D
YWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1cywgMD4o
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0
aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3Nh
Z2UsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5j
dGlvbkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlLCAy
PihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CiB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihWaXNpdG9y
JiB2aXNpdG9yKQogewpAQCAtMTU3LDQ1ICsxMDYsMzQgQEAgYm9vbCBqc0RPTVdpbmRvd0dldE93
blByb3BlcnR5U2xvdFJlc3RyaQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
I2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkKIAogICAgIC8vIFRoZXNl
IGFyZSB0aGUgZnVuY3Rpb25zIHdlIGFsbG93IGFjY2VzcyB0byBjcm9zcy1vcmlnaW4gKERvTm90
Q2hlY2tTZWN1cml0eSBpbiBJREwpLgotICAgIC8vIEFsd2F5cyBwcm92aWRlIHRoZSBvcmlnaW5h
bCBmdW5jdGlvbiwgb24gYSBmcmVzaCB1bmNhY2hlZCBmdW5jdGlvbiBvYmplY3QuCi0gICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuYmx1clB1YmxpY05hbWUoKSkgewotICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5j
ZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpKSB7
Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1Jl
bW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nIDoganNET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mb2N1c1B1Ymxp
Y05hbWUoKSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVt
b3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyA6
IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMu
cG9zdE1lc3NhZ2VQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERP
TVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9w
b3N0TWVzc2FnZU5vbkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1l
c3NhZ2VOb25DYWNoaW5nKTsKKyAgICBhdXRvKiBjbGFzc0luZm8gPSB3aW5kb3dUeXBlID09IERP
TVdpbmRvd1R5cGU6OlJlbW90ZSA/IEpTUmVtb3RlRE9NV2luZG93OjppbmZvKCkgOiBKU0RPTVdp
bmRvdzo6aW5mbygpOworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3Nl
UHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZm9j
dXNQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5i
bHVyUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMu
cG9zdE1lc3NhZ2VQdWJsaWNOYW1lKCkpIHsKKyAgICAgICAgYXV0byogZW50cnkgPSBjbGFzc0lu
Zm8tPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1
dG8qIGpzRnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+ZnVuY3Rpb25MZW5ndGgoKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
LCBqc0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gV2hl
biBhY2Nlc3NpbmcgY3Jvc3Mtb3JpZ2luIGtub3duIFdpbmRvdyBwcm9wZXJ0aWVzLCB3ZSBhbHdh
eXMgdXNlIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSBnZXR0ZXIsCiAgICAgLy8gZXZlbiBpZiB0aGUg
cHJvcGVydHkgd2FzIHJlbW92ZWQgLyByZWRlZmluZWQuIEFzIG9mIGVhcmx5IDIwMTYsIHRoaXMg
bWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUncwogICAgIC8vIGJlaGF2aW9yLgotICAgIGF1dG8q
IGNsYXNzSW5mbyA9IHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8gSlNSZW1v
dGVET01XaW5kb3c6OmluZm8oKSA6IEpTRE9NV2luZG93OjppbmZvKCk7Ci0gICAgaWYgKGF1dG8q
IGVudHJ5ID0gY2xhc3NJbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgIC8vIE9ubHkgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIHNwZWNpZmljIHBy
b3BlcnRpZXMuCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0
aW9uUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLmNsb3NlZFB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aAotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy5zZWxmUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUg
PT0gYnVpbHRpbk5hbWVzLndpbmRvd1B1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVy
dHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGljTmFtZSgpCi0gICAgICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKQot
ICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1l
KCkpIHsKLSAgICAgICAgICAgIGF1dG8qIGdldHRlciA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246
OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnBy
b3BlcnR5R2V0dGVyKCkpOwotICAgICAgICAgICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlOYW1l
ID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKSA/IEpTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50
cnktPnByb3BlcnR5UHV0dGVyKCkpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8qIGdldHRl
clNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2V0dGVyLCBzZXR0ZXIpOwotICAgICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwgZ2V0dGVyU2V0dGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgp
CisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuc2VsZlB1YmxpY05hbWUo
KQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGlj
TmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVi
bGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZnJhbWVz
UHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJs
aWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQ
dWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJl
bnRQdWJsaWNOYW1lKCkpIHsKKyAgICAgICAgYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRp
Y1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIHNldHRl
ciA9IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBl
bnRyeS0+cHJvcGVydHlQdXR0ZXIoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8qIGdldHRlclNl
dHRlciA9IHRoaXNPYmplY3QtPmNyZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzZXR0
ZXIpOworICAgICAgICBzbG90LnNldEdldHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0
ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3IgY2hp
bGQgZnJhbWVzIGJ5IG5hbWUgYmVmb3JlIGJ1aWx0LWluIHByb3BlcnRpZXMgdG8gbWF0Y2ggTW96
aWxsYS4gVGhpcyBkb2VzCkBAIC0yNjUsNyArMjAzLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTTwogICAgICAgICAvLyBEZXRlY3Qgd2hlbiB3ZSdyZSBnZXR0aW5n
IHRoZSBwcm9wZXJ0eSAnc2hvd01vZGFsRGlhbG9nJywgdGhpcyBpcyBkaXNhYmxlZCwgYW5kIGhh
cyBpdHMgb3JpZ2luYWwgdmFsdWUuCiAgICAgICAgIGJvb2wgaXNTaG93TW9kYWxEaWFsb2dBbmRT
aG91bGRIaWRlID0gcHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2hv
d01vZGFsRGlhbG9nUHVibGljTmFtZSgpCiAgICAgICAgICAgICAmJiAoIWZyYW1lIHx8ICFET01X
aW5kb3c6OmNhblNob3dNb2RhbERpYWxvZygqZnJhbWUpKQotICAgICAgICAgICAgJiYgc2xvdC5p
c1ZhbHVlKCkgJiYgaXNIb3N0RnVuY3Rpb24oc2xvdC5nZXRWYWx1ZShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpLCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fc2hvd01vZGFs
RGlhbG9nKTsKKyAgICAgICAgICAgICYmIHNsb3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9u
KHNsb3QuZ2V0VmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSwgc19pbmZv
LnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPmZ1bmN0aW9uKCkpOwog
ICAgICAgICAvLyBVbmxlc3Mgd2UncmUgaW4gdGhlIHNob3dNb2RhbERpYWxvZyBzcGVjaWFsIGNh
c2UsIHdlJ3JlIGRvbmUuCiAgICAgICAgIGlmICghaXNTaG93TW9kYWxEaWFsb2dBbmRTaG91bGRI
aWRlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjc0MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDIxICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgi
CiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvTG9va3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzTG9jYXRpb25JbnN0YW5j
ZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsKLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBs
PGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2UsIDE+KGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKLX0KLQogc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpT
TG9jYXRpb24mIHRoaXNPYmplY3QsIEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwpAQCAtNjQsNyArNTUsOSBAQCBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAKICAgICAvLyBXZSBvbmx5IGFs
bG93IGFjY2VzcyB0byBMb2NhdGlvbi5yZXBsYWNlKCkgY3Jvc3Mgb3JpZ2luLgogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZSkgewotICAgICAgICBzbG90
LnNldEN1c3RvbSgmdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGpzTG9jYXRp
b25JbnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsKKyAgICAgICAgYXV0byogZW50
cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGF1dG8qIGpzRnVuY3Rpb24gPSB0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpLT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSk7
CisgICAgICAgIHNsb3Quc2V0VmFsdWUoJnRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwganNGdW5jdGlvbik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNzIsOCArNjUsNyBAQCBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAgICAgLy8gYSBkZXNjcmlwdG9yIHRoYXQgaGFz
IGEgc2V0dGVyIGJ1dCBubyBnZXR0ZXIuCiAgICAgaWYgKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBl
KCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5ICYm
IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5ocmVmUHVibGljTmFtZSgpKSB7CiAgICAgICAgIGF1dG8qIGVu
dHJ5ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBhdXRvKiBzZXR0ZXIgPSBKU0N1c3RvbVNldHRlckZ1bmN0aW9u
OjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5w
cm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxscHRyLCBzZXR0ZXIpOwor
ICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLT5j
cmVhdGVDcm9zc09yaWdpbkdldHRlclNldHRlcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIHNsb3Qu
c2V0R2V0dGVyU2xvdCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc0MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMwNjYsOSArMzA2Niw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIG15ICRudW1DdXN0
b21PcGVyYXRpb25zID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKLSAg
ICBteSAkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAwOwotICAgIG15ICRoYXNGb3J3
YXJkRGVjbGFyaW5nQXR0cmlidXRlcyA9IDA7Ci0KICAgICBteSAkaGFzRE9NSklUQXR0cmlidXRl
cyA9IDA7CiAKICAgICAjIEF0dHJpYnV0ZSBhbmQgZnVuY3Rpb24gZW51bXMKQEAgLTMwODQsOCAr
MzA4MSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICRoYXNET01KSVRBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwotCi0gICAgICAgICAgICAkaGFzRm9yd2FyZERl
Y2xhcmluZ0F0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTQ0LDcg
KzMxMzksNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlv
biAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAkbnVtQ3VzdG9tT3BlcmF0
aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKTsKLSAgICAgICAgJGhhc0Zvcndh
cmREZWNsYXJpbmdPcGVyYXRpb25zID0gMSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICB9CiAKICAgICBpZiAoJG51bUN1c3Rv
bU9wZXJhdGlvbnMgPiAwKSB7CkBAIC0zMjcwLDUyICszMjY0LDYgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAKICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwg
JGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlv
bigkaW50ZXJmYWNlKTsKIAotICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMp
IHsKLSAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJG9wZXJh
dGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICAgICAgbmV4dCBpZiAk
b3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9
ID4gMTsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwotCi0gICAgICAgICAgICBpZiAoJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKLSAg
ICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKLSAgICAgICAg
ICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9u
Q29uc2lkZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAkY29kZUdlbmVyYXRvci0+R2Vu
ZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRy
aWJ1dGUpIDogdW5kZWY7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAg
ICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRvcGVyYXRpb24pOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oJHtmdW5jdGlvbk5hbWV9KTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJp
Z2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwi
XG4iKTsKLSAgICB9Ci0KLSAgICBpZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVzKSB7
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEF0dHJpYnV0ZXNcblxuIik7Ci0gICAg
ICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewot
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRl
ciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUigke2dldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHko
JGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRl
U2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigk
e3NldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICAjIENoZWNrSlNDYXN0IFNuaXBwZXQgZnVuY3Rpb24uCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgJGhlYWRlcklu
Y2x1ZGVzeyI8SmF2YVNjcmlwdENvcmUvU25pcHBldC5oPiJ9ID0gMTsKQEAgLTQzMDcsNyArNDI1
NSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAo
QHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0
aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsK
LSAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9y
d2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5u
YW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKQEAgLTQzNTMsNyArNDMwMCw2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBmb3JlYWNoIG15ICRh
dHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRl
cn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZp
c2lvbiAyNzQzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw2IEBACiAgICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkIgog
ICAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiRm9yd2FyZERlY2xhcmVJbkhlYWRl
ciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVy
YXRpb24iXQotICAgICAgICB9LAogICAgICAgICAiR2VuZXJhdGVJc1JlYWNoYWJsZSI6IHsKICAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAg
InZhbHVlcyI6IFsiIiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBs
Q2FudmFzQmFzZSIsICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25l
ck5vZGVSb290IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21E
T01XaW5kb3ciLCAiUmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCShyZXZpc2lvbiAyNzQzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2MiwxMSBAQAogICAgIFtSZXBs
YWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3Agc3RhdHVzYmFyOwogICAgIFtSZXBs
YWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3AgdG9vbGJhcjsKICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHN0YXR1czsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1J
bmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNsb3Nl
KCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtEb05vdENoZWNrU2VjdXJpdHks
IENhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICBbRG9O
b3RDaGVja1NlY3VyaXR5XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAg
dW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1
bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwot
ICAgIFtEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5l
ZCBibHVyKCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93XSB1bmRlZmluZWQgZm9jdXMoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRlZmlu
ZWQgYmx1cigpOwogCiAgICAgLy8gb3RoZXIgYnJvd3NpbmcgY29udGV4dHMKICAgICBbUmVwbGFj
ZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CkBAIC05MSw4ICs5MSw4IEBACiAgICAgRE9N
U3RyaW5nPyBwcm9tcHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9uYWwg
RE9NU3RyaW5nIGRlZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRlZmluZWQgcHJpbnQoKTsKIAot
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2Vj
dXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmlu
ZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlv
bmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Ci0gICAgW0NhbGxXaXRoPUdsb2Jh
bE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xh
cmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOworICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJp
dHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2Us
IFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNm
ZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERv
Tm90Q2hlY2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2Fn
ZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMp
OwogCiAKICAgICAvLyBPYnNvbGV0ZTogU3RpbGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCkBAIC0x
MTksNyArMTE5LDcgQEAKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9SU9TX0dFU1RV
UkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2VzdHVyZXN0YXJ0OwogCiAgICAg
Ly8gTm9uLXN0YW5kYXJkOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgSFRNTCBzcGVj
aWZpY2F0aW9uIGFuZCBieSBvdGhlciBicm93c2Vycy4KLSAgICBbQ3VzdG9tLCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0cmluZyB1cmwsIG9wdGlvbmFs
IGFueSBkaWFsb2dBcmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZUFyZ3MpOworICAgIFtD
dXN0b21dIGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgYW55IGRp
YWxvZ0FyZ3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CiAKICAgICAvLyBOb24t
c3RhbmRhcmQ6IHNob3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhpcyAoaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjUzKS4KICAgICAvLyBCbGluayBhbHJlYWR5IGRl
cHJlY2F0ZWQgaXQgKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMv
ZGV0YWlsP2lkPTQzNzU2OSkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHJldmlzaW9u
IDI3NDMwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDkgQEAKICAgICBhdHRyaWJ1dGUgU2Nyb2xsUmVzdG9yYXRpb24gc2Ny
b2xsUmVzdG9yYXRpb247CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBzdGF0
ZTsKIAotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5k
ZWZpbmVkIGJhY2soKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5I
ZWFkZXJdIHVuZGVmaW5lZCBmb3J3YXJkKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3
YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDAp
OworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGJhY2soKTsKKyAgICBbQ2FsbFdp
dGg9RG9jdW1lbnRdIHVuZGVmaW5lZCBmb3J3YXJkKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50
XSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOwogCiAgICAgLy8gRklYTUU6
IHRpdGxlIHNob3VsZCBub3QgYmUgbnVsbGFibGUgYXMgcGVyIHRoZSBIVE1MIHNwZWNpZmljYXRp
b24uCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcHVzaFN0YXRlKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/
IHVybCA9IG51bGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI3
NDMwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw5ICs0NSw5IEBACiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0
ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0
aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVj
bGFyZUluSGVhZGVyXSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwotICAgIFtEb05v
dENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhy
b3dFeGNlcHRpb24sIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCByZXBsYWNlKFVT
VlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJl
SW5IZWFkZXJdIHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93
JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJp
bmcgdXJsKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cm
Rmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJp
bmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7
CiAKICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCiAgICAgW1NldHRlckNhbGxX
aXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwcm90b2Nv
bDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHJldmlzaW9u
IDI3NDMwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBJ
bXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSB3aW5kb3c7
CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgc2VsZjsK
ICAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG51bGxhYmxl
LgotICAgIFtDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRl
cl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKLSAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2lu
ZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9jdXMoKTsKLSAgICBbRm9y
d2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsKKyAgICBbQ2FsbFdpdGg9SW5j
dW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGNsb3NlZDsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmlu
ZWQgZm9jdXMoKTsKKyAgICB1bmRlZmluZWQgYmx1cigpOwogICAgIFtSZXBsYWNlYWJsZSwgSW1w
bGVtZW50ZWRBcz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwog
ICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5
PyB0b3A7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBvcGVuZXI7CiAgICAg
W1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHBhcmVudDsKLSAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJ
bkhlYWRlcl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFy
Z2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgcG9zdE1l
c3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0MzA4
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjEtMDMtMTEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgor
CisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRv
dyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJv
Y2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWw6CisKIDIwMjEtMDMtMTEg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFsaWdu
IEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSgpIHdpdGggdGhlIHNwZWMgYW5kIG90
aGVyIHJ1bnRpbWVzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJv
Y2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc0MzA3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5jbG9zZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5j
dGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcuYmx1
ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LnBvc3RNZXNzYWdlIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xvc2UgaXMgdy5jbG9zZQorUEFTUyB3LmZvY3Vz
IGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcuYmx1cgorUEFTUyB3LnBvc3RNZXNzYWdlIGlz
IHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVzc2FnZS5sZW5ndGggaXMgMQogUEFTUyB3LnBv
c3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5m
b2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB3LmJsdXIoKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
cm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwJKHJldmlz
aW9uIDI3NDMwNykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNz
LXN3YXAtd2luZG93LW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBzaG91bGRCZVR5cGUoIncuZm9jdXMiLCAiRnVuY3Rp
b24iKTsKICAgICBzaG91bGRCZVR5cGUoIncuYmx1ciIsICJGdW5jdGlvbiIpOwogICAgIHNob3Vs
ZEJlVHlwZSgidy5wb3N0TWVzc2FnZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJ3LmNs
b3NlIiwgIncuY2xvc2UiKTsKKyAgICBzaG91bGRCZSgidy5mb2N1cyIsICJ3LmZvY3VzIik7Cisg
ICAgc2hvdWxkQmUoIncuYmx1ciIsICJ3LmJsdXIiKTsKKyAgICBzaG91bGRCZSgidy5wb3N0TWVz
c2FnZSIsICJ3LnBvc3RNZXNzYWdlIik7CisgICAgc2hvdWxkQmUoIncucG9zdE1lc3NhZ2UubGVu
Z3RoIiwgIjEiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5wb3N0TWVzc2FnZSgndGVzdCcsICcq
JykiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5mb2N1cygpIik7CiAgICAgc2hvdWxkTm90VGhy
b3coIncuYmx1cigpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3NDMwOCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0xMSAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhv
ZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwg
b2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWNvbW1vbi5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1
bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1sOiBB
ZGRlZC4KKwogMjAyMS0wMy0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5j
b20+CiAKICAgICAgICAgQWxpZ24gSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KCkg
d2l0aCB0aGUgc3BlYyBhbmQgb3RoZXIgcnVudGltZXMKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1
bmN0aW9uLWNhY2hpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBA
QAorCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBhcmUgY2FjaGVkCitQQVNTIENy
b3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGFyZSBjYWNoZWQKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBM
b2NhdGlvbiBgaHJlZmAgc2V0dGVyIGlzIGNhY2hlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vz
c29ycyBhcmUgY2FjaGVkIHBlciBSZWFsbSB2aWFbW0Nyb3NzT3JpZ2luUHJvcGVydHlEZXNjcmlw
dG9yTWFwXV08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJv
cGVydHloZWxwZXItKC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdh
aXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jv
c3NPcmlnaW5XaW5kb3dNZXRob2RzKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLCB3
W2tleV0sIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjMSA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVz
YzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYzEudmFsdWUsIGRlc2MyLnZhbHVlLCBgdy4ke2tleX0gdmlhIFtbR2V0
T3duUHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMg
YXJlIGNhY2hlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9
IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9m
IGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MxID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBjb25zdCBkZXNj
MiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXNjMS5nZXQsIGRlc2MyLmdldCwgYHcuJHtrZXl9IGdldHRlcmApOworICAg
ICAgICBpZiAoa2V5ID09PSAibG9jYXRpb24iKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGRlc2MxLnNldCwgZGVzYzIuc2V0LCBgdy4ke2tleX0gc2V0dGVyYCk7CisgICAgICAgIH0KKyAg
ICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgYXJlIGNhY2hlZCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09y
aWdpbldpbmRvdyh0KTsKKyAgICBhc3NlcnRfZXF1YWxzKHcubG9jYXRpb24ucmVwbGFjZSwgdy5s
b2NhdGlvbi5yZXBsYWNlLCAidmlhIFtbR2V0XV0iKTsKKyAgICBjb25zdCBkZXNjMSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBj
b25zdCBkZXNjMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwg
InJlcGxhY2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwg
InZpYSBbW0dldE93blByb3BlcnR5XV0iKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJl
cGxhY2VgIG1ldGhvZCBpcyBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3Qg
ZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVm
Iik7CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcu
bG9jYXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNl
dCk7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkIik7
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpz
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzQgQEAKKyJ1c2Ugc3RyaWN0IjsKKworY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzID0g
WworICAgIHtrZXk6ICJjbG9zZSIsIGxlbmd0aDogMH0sCisgICAge2tleTogImZvY3VzIiwgbGVu
Z3RoOiAwfSwKKyAgICB7a2V5OiAiYmx1ciIsIGxlbmd0aDogMH0sCisgICAge2tleTogInBvc3RN
ZXNzYWdlIiwgbGVuZ3RoOiAxfSwKK107CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93QWNjZXNz
b3JzID0gWworICAgICJ3aW5kb3ciLAorICAgICJzZWxmIiwKKyAgICAibG9jYXRpb24iLAorICAg
ICJjbG9zZWQiLAorICAgICJmcmFtZXMiLAorICAgICJsZW5ndGgiLAorICAgICJ0b3AiLAorICAg
ICJvcGVuZXIiLAorICAgICJwYXJlbnQiLAorXS5tYXAoa2V5ID0+ICh7a2V5fSkpOworCitjb25z
dCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3cgPSB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBjb25zdCBwYXRoID0gbG9jYXRpb24u
cGF0aG5hbWUuc2xpY2UoMCwgbG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSkgKyAi
L2ZyYW1lLmh0bWwiOworICAgIGlmcmFtZS5zcmMgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1P
VEVfT1JJR0lOICsgcGF0aDsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUoaWZyYW1l
LmNvbnRlbnRXaW5kb3cpOyB9OworICAgICAgICBpZnJhbWUub25lcnJvciA9IHJlamVjdDsKKwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgICAgICB0LmFkZF9jbGVh
bnVwKCgpID0+IHsgaWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgICB9KTsKK307CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3Jp
Z2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxl
bmd0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2Jq
ZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3Jy
ZWN0ICdsZW5ndGgnCitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29y
cmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhv
ZCBoYXMgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZg
IHNldHRlciBoYXMgY29ycmVjdCAnbGVuZ3RoJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVj
dHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1v
cmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBh
cmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ2xlbmd0aCcgcHJvcGVydHk8L3RpdGxlPgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9i
cm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8
ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93
KHQpOworICAgIGZvciAoY29uc3Qge2tleSwgbGVuZ3RofSBvZiBjcm9zc09yaWdpbldpbmRvd01l
dGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3W2tleV0ubGVuZ3RoLCBsZW5ndGgsIGB3
LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mu
dmFsdWUubGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dYCk7
CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ2xl
bmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2Fp
dCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9z
c09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
c2MuZ2V0Lmxlbmd0aCwgMCwgYHcuJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2Nh
dGlvbiIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCBg
dy4ke2tleX1gKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFj
Y2Vzc29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAg
YXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubGVuZ3RoLCAxKTsKKyAgICBjb25zdCBk
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFj
ZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgsIDEpOworfSwgIkNyb3Nz
LW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNy
b3NzT3JpZ2luV2luZG93KHQpOworICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNj
LnNldC5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVy
IGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLW5hbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQ
QVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNT
IENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZScKK1BBU1Mg
Q3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ25hbWUn
CitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICdu
YW1lJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1v
YmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3Jp
Z2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ25hbWUn
IHByb3BlcnR5PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnBy
b3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3Vi
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlv
bi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVz
ZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3
YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNy
b3NzT3JpZ2luV2luZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XS5u
YW1lLCBrZXksIGB3LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVy
dHldXWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3Jy
ZWN0ICduYW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9
IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9m
IGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZGVzYy5nZXQubmFtZSwgYGdldCAke2tleX1gKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxv
Y2F0aW9uIikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5uYW1lLCBgc2V0
ICR7a2V5fWApOworICAgICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNj
ZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNz
ZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJlcGxhY2UubmFtZSwgInJlcGxhY2UiKTsKKyAgICBjb25z
dCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVw
bGFjZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCAicmVwbGFjZSIpOwor
fSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICdu
YW1lJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0
IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVh
bHMoZGVzYy5zZXQubmFtZSwgInNldCBocmVmIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9u
IGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJlY3QgJ25hbWUnIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423132</attachid>
            <date>2021-03-14 13:43:54 -0700</date>
            <delta_ts>2021-03-16 07:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210314224352.patch</filename>
            <type>text/plain</type>
            <size>51817</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDIxLTAzLTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dl
dHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMgY3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBv
aW50ZXIuCisKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpK
U0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6bm9uQ2FjaGluZ1N0YXRp
Y0Z1bmN0aW9uR2V0dGVySW1wbCk6IERlbGV0ZWQuCisKIDIwMjEtMDMtMTQgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdDU2VnbWVudGVkQXJyYXkncyBzaXplKCkg
YW5kIGlzRW1wdHkoKSBtZXRob2RzIHNob3VsZCBiZSBjb25zdC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiAyNzQ0MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0dGVyRnVuCiAKICAgICBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJGdW5jdGlvbiA9IGpzQ2FzdDxKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0KICAgICBHZXRWYWx1ZUZ1bmMgZ2V0dGVy
ID0gY3VzdG9tR2V0dGVyRnVuY3Rpb24tPmdldHRlcigpOwotICAgIEFTU0VSVChnZXR0ZXIpOwog
CiAgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gY3VzdG9tR2V0dGVyRnVuY3Rpb24tPmRvbUF0
dHJpYnV0ZSgpKSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRy
aWJ1dGUtPmNsYXNzSW5mbykpCkBAIC02Miw2ICs2MCw3IEBAIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b246OkpTQ3VzdG9tR2V0dGVyRnUKIAogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIs
IE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKIHsKKyAgICBB
U1NFUlQoZ2V0dGVyKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0
SG9zdEZ1bmN0aW9uKGN1c3RvbUdldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlKCk7CiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlND
dXN0b21HZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1dGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlv
bi5jcHAJKHJldmlzaW9uIDI3NDQwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGN1c3RvbVMKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgUHV0VmFsdWVGdW5j
IHNldHRlciA9IGpzQ2FzdDxKU0N1c3RvbVNldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKS0+c2V0dGVyKCk7Ci0gICAgQVNTRVJUKHNldHRlcik7CiAgICAgc2V0dGVyKGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpLCBKU1ZhbHVl
OjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00OSw2ICs0OCw3IEBAIEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb246OkpTQ3VzdG9tU2V0dGVyRnUKIAogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogSlND
dXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBz
ZXR0ZXIpCiB7CisgICAgQVNTRVJUKHNldHRlcik7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwsIGNh
bGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21T
ZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGZ1
bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21TZXR0ZXJGdW5jdGlv
bj4odm0uaGVhcCkpIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBzZXR0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDI3NDQwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsOSArNDE0LDQgQEAgaW5s
aW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bQogICAgIH0KIH0KIAotdGVtcGxh
dGU8UmF3TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEVuY29kZWRK
U1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGds
b2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5j
dGlvbikpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI3NDQwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDU1IEBACisyMDIxLTAzLTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdt
YWlsLmNvbT4KKworICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29y
cyBvZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEZvciBjcm9zcy1vcmlnaW4g
bWV0aG9kcyAvIGFjY2Vzc29ycywgV2luZG93IGFuZCBMb2NhdGlvbiBvYmplY3RzIHJldHVybiBk
aWZmZXJlbnQgSlNGdW5jdGlvbgorICAgICAgICBpbnN0YW5jZXMgb24gZXZlcnkgW1tHZXRdXS4g
VGhlIGludGVudCB3YXMgdG8gZW5zdXJlIGlzb2xhdGlvbiBieSBzdXBwbHlpbmcgZGlmZmVyZW50
IFJlYWxtcyB3aXRoCisgICAgICAgIGRpZmZlcmVudCBmdW5jdGlvbiBvYmplY3RzLiBIb3dldmVy
LCB3aXRoaW4gdGhlIHNhbWUgY2FsbGVlIFJlYWxtLCB0aGlzIG1ha2VzIHN1YnNlcXVlbnQgbG9v
a3VwcworICAgICAgICBvZiBhIGNyb3NzLW9yaWdpbiBtZXRob2QgLyBhY2Nlc3NvciBmYWlsIHJl
ZmVyZW5jZSBlcXVhbGl0eSB0ZXN0LCB3aGljaCBpcyByYXRoZXIgY29uZnVzaW5nOgorCisgICAg
ICAgICAgICBgY3Jvc3NPcmlnaW5XaW5kb3cuZm9jdXMgPT09IGNyb3NzT3JpZ2luV2luZG93LmZv
Y3VzIC8vID0+IGZhbHNlYAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBbW0Nyb3Nz
T3JpZ2luUHJvcGVydHlEZXNjcmlwdG9yTWFwXV0sIGJyaW5naW5nIGNvbnNpc3RlbnQgZnVuY3Rp
b24gaWRlbnRpdHkKKyAgICAgICAgYW5kIGFsaWduaW5nIFdlYktpdCB3aXRoIHRoZSBzcGVjIFsx
XSwgQmxpbmssIGFuZCBHZWNrby4gRm9yIGNvbnZlbmllbmNlLCBjYWNoZSBtYXBzIGFyZSBhZGRl
ZCB0bworICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCAodG8gYWNjb21tb2RhdGUgUmVtb3RlRE9N
V2luZG93KSBhbmQgY292ZXIgYm90aCBXaW5kb3cgYW5kIExvY2F0aW9uIG9iamVjdHMuCisKKyAg
ICAgICAgQXMgYSBjYWNoZSBtYXAga2V5LCBhIHBhaXIgb2YgbGV4aWNhbCBnbG9iYWwgb2JqZWN0
IGFuZCByYXcgZnVuY3Rpb24gcG9pbnRlciBpcyB1c2VkLCB3aGljaCBndWFyYW50ZWVzCisgICAg
ICAgIGNvcnJlY3RuZXNzIGV2ZW4gaWYgV2luZG93IGFuZCBMb2NhdGlvbiB3b3VsZCBleHBvc2Ug
Y3Jvc3Mtb3JpZ2luIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW1vdmVzIDkgY3VzdG9tIGdldHRlcnMsIGFkZHMgcnVudGltZSBsb29rdXAgZm9yICJz
aG93TW9kYWxEaWFsb2ciICh3aGljaCBpcyByYXJlKSwKKyAgICAgICAgYW5kIHJlbW92ZXMgW0Zv
cndhcmREZWNsYXJlSW5IZWFkZXJdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhcyBpdCdzIG5vdyB1bnVz
ZWQgYW5kIG5vbi10cml2aWFsIHRvIGdlbmVyYXRlLgorCisgICAgICAgIEFsc28sIGZpeGVzIGNy
b3NzLXJlYWxtIGBwb3N0TWVzc2FnZS5sZW5ndGhgIHRvIGVxdWFsIDEgYXMgcGVyIFdlYklETC4K
KworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJv
d3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pCisKKyAg
ICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rp
b24tY2FjaGluZy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9y
aWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09yaWdpbkdldHRlclNl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0hp
c3RvcnkuaWRsOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaWRsOgorICAgICAgICAqIHBhZ2Uv
UmVtb3RlRE9NV2luZG93LmlkbDoKKwogMjAyMS0wMy0xNCAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlckxpbmVCcmVhayBzaG91bGQgc3RheSBpbmxpbmUg
bGV2ZWwgYm94IGV2ZW4gd2hlbiBkaXNwbGF5IHByb3BlcnR5IHNheXMgb3RoZXJ3aXNlLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjc0NDAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCwxMyBAQAogI2luY2x1
ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0
aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVCbG9jay5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRl
cm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNzUsNiArNzksOCBAQCBKU0RPTUds
b2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoVk0mCiAgICAgLCBtX3dvcmxkKFdURk1vdmUo
d29ybGQpKQogICAgICwgbV93b3JsZElzTm9ybWFsKG1fd29ybGQtPmlzTm9ybWFsKCkpCiAgICAg
LCBtX2J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucyh2bSkKKyAgICAsIG1fY3Jvc3NPcmlnaW5GdW5j
dGlvbk1hcCh2bSkKKyAgICAsIG1fY3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXJNYXAodm0pCiB7CiB9
CiAKQEAgLTI5OCw2ICszMDQsMzIgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01H
dWFyZGVkTwogICAgICAgICBndWFyZGVkLT5jbGVhcigpOwogfQogCitKU0Z1bmN0aW9uKiBKU0RP
TUdsb2JhbE9iamVjdDo6Y3JlYXRlQ3Jvc3NPcmlnaW5GdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBDcm9zc09yaWdp
bk1hcEtleSBrZXkgPSBzdGQ6Om1ha2VfcGFpcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBuYXRpdmVG
dW5jdGlvbi5yYXdQb2ludGVyKCkpOworICAgIEpTRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBtX2Ny
b3NzT3JpZ2luRnVuY3Rpb25NYXAuZ2V0KGtleSk7CisgICAgaWYgKCFqc0Z1bmN0aW9uKSB7Cisg
ICAgICAgIGpzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVj
dC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpLCBuYXRpdmVGdW5jdGlvbik7CisgICAgICAgIG1fY3Jvc3NPcmlnaW5GdW5jdGlvbk1h
cC5zZXQoa2V5LCBqc0Z1bmN0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGpzRnVuY3Rpb247Cit9
CisKK0dldHRlclNldHRlciogSlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luR2V0
dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBQdXRWYWx1ZUZ1bmMgc2V0dGVy
KQoreworICAgIEFTU0VSVChnZXR0ZXIgfHwgc2V0dGVyKTsKKyAgICBDcm9zc09yaWdpbk1hcEtl
eSBrZXkgPSBzdGQ6Om1ha2VfcGFpcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnZXR0ZXIgPyByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXR0ZXIpIDogcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2V0
dGVyKSk7CisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBtX2Nyb3NzT3JpZ2luR2V0
dGVyU2V0dGVyTWFwLmdldChrZXkpOworICAgIGlmICghZ2V0dGVyU2V0dGVyKSB7CisgICAgICAg
IGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGxleGljYWxHbG9iYWxPYmplY3QsCisgICAg
ICAgICAgICBnZXR0ZXIgPyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyKSA6IG51bGxwdHIsCisgICAgICAg
ICAgICBzZXR0ZXIgPyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2V0dGVyKSA6IG51bGxwdHIpOworICAgICAgICBt
X2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwLnNldChrZXksIGdldHRlclNldHRlcik7CisgICAg
fQorICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7Cit9CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAvLyBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRt
bCNjb21waWxlLWEtcG90ZW50aWFsLXdlYmFzc2VtYmx5LXJlc3BvbnNlCiBzdGF0aWMgSlNDOjpK
U1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgc291cmNlLCBKU0M6Oldhc206OkNvbXBp
bGVyTW9kZSBjb21waWxlck1vZGUsIEpTQzo6SlNPYmplY3QqIGltcG9ydE9iamVjdCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gMjc0NDAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9ja0R1cmluZ01hcmtp
bmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC04Myw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SlNQcm94
eSYgcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuICptX3Byb3h5LmdldCgp
OyB9CiAKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6Ok5hdGl2ZUZ1bmN0aW9u
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTQzo6R2V0dGVyU2V0dGVyKiBjcmVhdGVDcm9zc09y
aWdpbkdldHRlclNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6R2V0VmFsdWVGdW5jLCBKU0M6OlB1dFZhbHVlRnVuYyk7CisKIHB1YmxpYzoKICAgICB+
SlNET01HbG9iYWxPYmplY3QoKTsKIApAQCAtMTI0LDcgKzEyOCwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWRkQnVpbHRpbkdsb2JhbHMoSlNDOjpWTSYpOwogICAgIGZyaWVuZCB2b2lkIEpTQnVp
bHRpbkludGVybmFsRnVuY3Rpb25zOjppbml0aWFsaXplKEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAK
KyAgICB1c2luZyBDcm9zc09yaWdpbk1hcEtleSA9IHN0ZDo6cGFpcjxKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kiwgdm9pZCo+OworCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMgbV9idWlsdGlu
SW50ZXJuYWxGdW5jdGlvbnM7CisgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXks
IEpTQzo6SlNGdW5jdGlvbj4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwOworICAgIEpTQzo6V2Vh
a0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4gbV9jcm9zc09yaWdp
bkdldHRlclNldHRlck1hcDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCShyZXZpc2lvbiAyNzQ0MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCw5IEBACiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZXJuYWxGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU01pY3JvdGFzay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvb2t1cC5oPgpAQCAtNjcsNTggKzY0LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2Up
Owotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0
YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZyk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fY2xvc2VOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2ZvY3VzTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RP
TVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0
TWVzc2FnZU5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyk7CiAjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzRE9NV2luZG93X3dlYmtpdCk7CiAjZW5kaWYKIAotSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyTm9uQ2FjaGluZywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0
dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ciwgMD4oZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
KQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJl
dHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9jbG9zZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwot
fQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2Nsb3NlTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2Fj
aGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
Y2xvc2UsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNh
Y2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3Vz
LCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1cywgMD4oZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVE
T01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZywgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1w
bDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2UsIDA+KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcklt
cGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlLCAyPihnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lk
IEpTRE9NV2luZG93Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQog
ewpAQCAtMTU3LDQ1ICsxMDYsMzQgQEAgYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xv
dFJlc3RyaQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Nyb3Nzb3JpZ2lu
Z2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkKIAogICAgIC8vIFRoZXNlIGFyZSB0aGUgZnVu
Y3Rpb25zIHdlIGFsbG93IGFjY2VzcyB0byBjcm9zcy1vcmlnaW4gKERvTm90Q2hlY2tTZWN1cml0
eSBpbiBJREwpLgotICAgIC8vIEFsd2F5cyBwcm92aWRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwg
b24gYSBmcmVzaCB1bmNhY2hlZCBmdW5jdGlvbiBvYmplY3QuCi0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMuYmx1clB1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90LnNldEN1
c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHdpbmRv
d1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0YW5j
ZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Js
dXJOb25DYWNoaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNs
b3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mb2N1c1B1YmxpY05hbWUoKSkgewot
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1v
dGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucG9zdE1lc3NhZ2VQ
dWJsaWNOYW1lKCkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6
OlJlbW90ZSA/IGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5v
bkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNo
aW5nKTsKKyAgICBhdXRvKiBjbGFzc0luZm8gPSB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6
OlJlbW90ZSA/IEpTUmVtb3RlRE9NV2luZG93OjppbmZvKCkgOiBKU0RPTVdpbmRvdzo6aW5mbygp
OworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgp
CisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZm9jdXNQdWJsaWNOYW1l
KCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5ibHVyUHVibGljTmFt
ZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucG9zdE1lc3NhZ2VQ
dWJsaWNOYW1lKCkpIHsKKyAgICAgICAgYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1By
b3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIGpzRnVuY3Rp
b24gPSB0aGlzT2JqZWN0LT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+ZnVuY3Rpb25M
ZW5ndGgoKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc0Z1bmN0aW9u
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gV2hlbiBhY2Nlc3Npbmcg
Y3Jvc3Mtb3JpZ2luIGtub3duIFdpbmRvdyBwcm9wZXJ0aWVzLCB3ZSBhbHdheXMgdXNlIHRoZSBv
cmlnaW5hbCBwcm9wZXJ0eSBnZXR0ZXIsCiAgICAgLy8gZXZlbiBpZiB0aGUgcHJvcGVydHkgd2Fz
IHJlbW92ZWQgLyByZWRlZmluZWQuIEFzIG9mIGVhcmx5IDIwMTYsIHRoaXMgbWF0Y2hlcyBGaXJl
Zm94IGFuZCBDaHJvbWUncwogICAgIC8vIGJlaGF2aW9yLgotICAgIGF1dG8qIGNsYXNzSW5mbyA9
IHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8gSlNSZW1vdGVET01XaW5kb3c6
OmluZm8oKSA6IEpTRE9NV2luZG93OjppbmZvKCk7Ci0gICAgaWYgKGF1dG8qIGVudHJ5ID0gY2xh
c3NJbmZvLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAg
ICAgIC8vIE9ubHkgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIHNwZWNpZmljIHByb3BlcnRpZXMuCi0g
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFt
ZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlZFB1
YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aAotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5z
ZWxmUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLndpbmRvd1B1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKQotICAgICAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8qIGdldHRlciA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwg
JmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5R2V0dGVy
KCkpOwotICAgICAgICAgICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5O
YW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKSA/IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0
ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5
UHV0dGVyKCkpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0
ZXIpOwotICAgICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgZ2V0dGVy
U2V0dGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpCisgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuc2VsZlB1YmxpY05hbWUoKQorICAgICAgICB8
fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpCisgICAg
ICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpCisg
ICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZnJhbWVzUHVibGljTmFtZSgp
CisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKKyAg
ICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkKKyAg
ICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNOYW1lKCkK
KyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1l
KCkpIHsKKyAgICAgICAgYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1Byb3BIYXNoVGFi
bGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIHNldHRlciA9IHByb3BlcnR5
TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBlbnRyeS0+cHJvcGVy
dHlQdXR0ZXIoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IHRoaXNP
YmplY3QtPmNyZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzZXR0ZXIpOworICAgICAg
ICBzbG90LnNldEdldHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3IgY2hpbGQgZnJhbWVzIGJ5
IG5hbWUgYmVmb3JlIGJ1aWx0LWluIHByb3BlcnRpZXMgdG8gbWF0Y2ggTW96aWxsYS4gVGhpcyBk
b2VzCkBAIC0yNjUsNyArMjAzLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTTwogICAgICAgICAvLyBEZXRlY3Qgd2hlbiB3ZSdyZSBnZXR0aW5nIHRoZSBwcm9wZXJ0
eSAnc2hvd01vZGFsRGlhbG9nJywgdGhpcyBpcyBkaXNhYmxlZCwgYW5kIGhhcyBpdHMgb3JpZ2lu
YWwgdmFsdWUuCiAgICAgICAgIGJvb2wgaXNTaG93TW9kYWxEaWFsb2dBbmRTaG91bGRIaWRlID0g
cHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2hvd01vZGFsRGlhbG9n
UHVibGljTmFtZSgpCiAgICAgICAgICAgICAmJiAoIWZyYW1lIHx8ICFET01XaW5kb3c6OmNhblNo
b3dNb2RhbERpYWxvZygqZnJhbWUpKQotICAgICAgICAgICAgJiYgc2xvdC5pc1ZhbHVlKCkgJiYg
aXNIb3N0RnVuY3Rpb24oc2xvdC5nZXRWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpLCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fc2hvd01vZGFsRGlhbG9nKTsKKyAg
ICAgICAgICAgICYmIHNsb3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9uKHNsb3QuZ2V0VmFs
dWUobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSwgc19pbmZvLnN0YXRpY1Byb3BI
YXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPmZ1bmN0aW9uKCkpOwogICAgICAgICAvLyBV
bmxlc3Mgd2UncmUgaW4gdGhlIHNob3dNb2RhbERpYWxvZyBzcGVjaWFsIGNhc2UsIHdlJ3JlIGRv
bmUuCiAgICAgICAgIGlmICghaXNTaG93TW9kYWxEaWFsb2dBbmRTaG91bGRIaWRlKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjc0NDAwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDIxICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9va3Vw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uX3Jl
cGxhY2VOb25DYWNoaW5nKTsKLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzTG9jYXRpb25J
bnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewot
ICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzTG9jYXRpb25J
bnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2UsIDE+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
LX0KLQogc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpTTG9jYXRpb24mIHRo
aXNPYmplY3QsIEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOwpAQCAtNjQsNyArNTUsOSBAQCBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAKICAgICAvLyBXZSBvbmx5IGFsbG93IGFjY2VzcyB0
byBMb2NhdGlvbi5yZXBsYWNlKCkgY3Jvc3Mgb3JpZ2luLgogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSgm
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGpzTG9jYXRpb25JbnN0YW5jZUZ1
bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsKKyAgICAgICAgYXV0byogZW50cnkgPSBKU0xvY2F0
aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIGF1dG8qIGpzRnVuY3Rpb24gPSB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLT5jcmVh
dGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSk7CisgICAgICAgIHNs
b3Quc2V0VmFsdWUoJnRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwganNGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNzIsOCArNjUsNyBAQCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RDb21tb24oSlNMCiAgICAgLy8gYSBkZXNjcmlwdG9yIHRoYXQgaGFzIGEgc2V0dGVyIGJ1
dCBubyBnZXR0ZXIuCiAgICAgaWYgKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5ICYmIHByb3BlcnR5TmFt
ZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5ocmVmUHVibGljTmFtZSgpKSB7CiAgICAgICAgIGF1dG8qIGVudHJ5ID0gSlNMb2Nh
dGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBhdXRvKiBzZXR0ZXIgPSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0s
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eVB1dHRl
cigpKTsKLSAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxscHRyLCBzZXR0ZXIpOworICAgICAgICBhdXRv
KiBnZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLT5jcmVhdGVDcm9zc09y
aWdpbkdldHRlclNldHRlcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBudWxs
cHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xv
dCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc0NDAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMwNjYsOSAr
MzA2Niw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIG15ICRudW1DdXN0b21PcGVyYXRpb25z
ID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKLSAgICBteSAkaGFzRm9y
d2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAwOwotICAgIG15ICRoYXNGb3J3YXJkRGVjbGFyaW5n
QXR0cmlidXRlcyA9IDA7Ci0KICAgICBteSAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDA7CiAKICAg
ICAjIEF0dHJpYnV0ZSBhbmQgZnVuY3Rpb24gZW51bXMKQEAgLTMwODQsOCArMzA4MSw2IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIj
ZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICRoYXNET01KSVRBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntET01KSVR9OwotCi0gICAgICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJp
YnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNs
YXJlSW5IZWFkZXJ9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTQ0LDcgKzMxMzksNiBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJm
YWNlLT5vcGVyYXRpb25zfSkgewogICAgICAgICAkbnVtQ3VzdG9tT3BlcmF0aW9ucysrIGlmIEhh
c0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKTsKLSAgICAgICAgJGhhc0ZvcndhcmREZWNsYXJpbmdP
cGVyYXRpb25zID0gMSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJk
RGVjbGFyZUluSGVhZGVyfTsKICAgICB9CiAKICAgICBpZiAoJG51bUN1c3RvbU9wZXJhdGlvbnMg
PiAwKSB7CkBAIC0zMjcwLDUyICszMjY0LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBH
ZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwg
JGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbigkaW50ZXJmYWNl
KTsKIAotICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMpIHsKLSAgICAgICAg
bXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCIv
LyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50
ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57
b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAg
ICAgICAgIG5leHQgdW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJ9OwotCi0gICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEk
aW5BcHBsZUNvcHlyaWdodCkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKLSAgICAgICAgICAgICAg
ICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKLSAgICAgICAgICAgICAgICAkaW5B
cHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdP
dmVybG9hZHMoJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5k
ZWY7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRp
b24pOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oJHtmdW5jdGlvbk5hbWV9KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9Ci0K
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5B
cHBsZUNvcHlyaWdodDsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiXG4iKTsKLSAgICB9
Ci0KLSAgICBpZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVzKSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsIi8vIEF0dHJpYnV0ZXNcblxuIik7Ci0gICAgICAgIGZvcmVhY2gg
bXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAg
bmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xh
cmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwotICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJp
YnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUigk
e2dldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkp
IHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xu
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAj
IENoZWNrSlNDYXN0IFNuaXBwZXQgZnVuY3Rpb24uCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8SmF2
YVNjcmlwdENvcmUvU25pcHBldC5oPiJ9ID0gMTsKQEAgLTQzMDcsNyArNDI1NSw2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5j
dGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNl
LT5vcGVyYXRpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3Zlcmxv
YWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAgICAgICAg
IG5leHQgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJ
bkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRv
cGVyYXRpb24pOwogICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVxICJbU3lt
Ym9sLkl0ZXJhdG9yXSI7CiAKQEAgLTQzNTMsNyArNDMwMCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAg
ICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAg
ICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVD
b25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzQ0MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgko
d29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw2IEBACiAgICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkIgogICAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiRm9yd2FyZERlY2xhcmVJbkhlYWRlciI6IHsKLSAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAg
ICAgICB9LAogICAgICAgICAiR2VuZXJhdGVJc1JlYWNoYWJsZSI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsi
IiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIs
ICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25lck5vZGVSb290Iiwg
IkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAi
UmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CShyZXZpc2lvbiAyNzQ0MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2MiwxMSBAQAogICAgIFtSZXBsYWNlYWJsZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEJhclByb3Agc3RhdHVzYmFyOwogICAgIFtSZXBsYWNlYWJsZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIEJhclByb3AgdG9vbGJhcjsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHN0YXR1czsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnREb2N1
bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0Rv
Tm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUlu
Y3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3Vy
aXR5XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAgICAgdW5kZWZpbmVkIHN0
b3AoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cs
IEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwotICAgIFtEb05vdENo
ZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBibHVyKCk7Cisg
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmlu
ZWQgZm9jdXMoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRlZmluZWQgYmx1cigpOwog
CiAgICAgLy8gb3RoZXIgYnJvd3NpbmcgY29udGV4dHMKICAgICBbUmVwbGFjZWFibGUsIERvTm90
Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
aW5kb3dQcm94eSBmcmFtZXM7CkBAIC05MSw4ICs5MSw4IEBACiAgICAgRE9NU3RyaW5nPyBwcm9t
cHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGRl
ZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRlZmluZWQgcHJpbnQoKTsKIAotICAgIFtDYWxsV2l0
aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndh
cmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNl
PG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Ci0gICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1
bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwg
TWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0
aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0
YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Cisg
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1
cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2Fn
ZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwogCiAKICAgICAv
LyBPYnNvbGV0ZTogU3RpbGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIChodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCkBAIC0xMTksNyArMTE5LDcg
QEAKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTXSBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2VzdHVyZXN0YXJ0OwogCiAgICAgLy8gTm9uLXN0YW5k
YXJkOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIGFu
ZCBieSBvdGhlciBicm93c2Vycy4KLSAgICBbQ3VzdG9tLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVy
XSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIGFueSBkaWFsb2dB
cmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZUFyZ3MpOworICAgIFtDdXN0b21dIGFueSBz
aG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgYW55IGRpYWxvZ0FyZ3MsIG9w
dGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CiAKICAgICAvLyBOb24tc3RhbmRhcmQ6IHNo
b3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhpcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NjUzKS4KICAgICAvLyBCbGluayBhbHJlYWR5IGRlcHJlY2F0ZWQgaXQg
KGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQz
NzU2OSkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHJldmlzaW9uIDI3NDQwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkg
KzMzLDkgQEAKICAgICBhdHRyaWJ1dGUgU2Nyb2xsUmVzdG9yYXRpb24gc2Nyb2xsUmVzdG9yYXRp
b247CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBzdGF0ZTsKIAotICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJhY2so
KTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVm
aW5lZCBmb3J3YXJkKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOworICAgIFtDYWxs
V2l0aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGJhY2soKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRd
IHVuZGVmaW5lZCBmb3J3YXJkKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQg
Z28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOwogCiAgICAgLy8gRklYTUU6IHRpdGxlIHNob3Vs
ZCBub3QgYmUgbnVsbGFibGUgYXMgcGVyIHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBkYXRhLCBET01TdHJpbmc/IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI3NDQwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0
NSw5IEBACiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2
ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lm
aWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5k
b3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVy
XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwotICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb24s
IEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwp
OwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVu
ZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAg
ICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKKyAg
ICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7CiAKICAgICAvLyBV
UkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdp
bmRvdyZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwcm90b2NvbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NDQwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlLCBJbXBsZW1lbnRlZEFz
PXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSB3aW5kb3c7CiAgICAgW1JlcGxh
Y2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgc2VsZjsKICAgICBbUHV0Rm9y
d2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlv
bj8gbG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG51bGxhYmxlLgotICAgIFtDYWxs
V2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVk
IGNsb3NlKCk7Ci0gICAgW0ZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGNsb3NlZDsKLSAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93LCBGb3J3YXJk
RGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9jdXMoKTsKLSAgICBbRm9yd2FyZERlY2xhcmVJ
bkhlYWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1l
bnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNs
b3NlZDsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgZm9jdXMoKTsK
KyAgICB1bmRlZmluZWQgYmx1cigpOwogICAgIFtSZXBsYWNlYWJsZSwgSW1wbGVtZW50ZWRBcz1z
ZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgZnJhbWVzOwogICAgIFtSZXBsYWNl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFtMZWdh
Y3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBvcGVuZXI7CiAgICAgW1JlcGxhY2VhYmxl
XSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IHBhcmVudDsKLSAgICBbQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5k
ZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBv
cHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1H
bG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1l
c3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4g
dHJhbnNmZXIgPSBbXSk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDAwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDMt
MTQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIENh
Y2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRp
b24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdp
bmRvdy1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
cHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWw6CisKIDIwMjEtMDMtMTMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2VsZWN0aW5nIHRo
ZSBmaXJzdCB3b3JkIGluIGFuIGltYWdlIG92ZXJsYXkgbWF5IHNlbGVjdCB0ZXh0IGluIHRoZSBw
cmV2aW91cyBsaW5lCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJv
Y2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc0NDAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5jbG9zZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5j
dGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcuYmx1
ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LnBvc3RNZXNzYWdlIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xvc2UgaXMgdy5jbG9zZQorUEFTUyB3LmZvY3Vz
IGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcuYmx1cgorUEFTUyB3LnBvc3RNZXNzYWdlIGlz
IHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVzc2FnZS5sZW5ndGggaXMgMQogUEFTUyB3LnBv
c3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5m
b2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB3LmJsdXIoKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
cm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwJKHJldmlz
aW9uIDI3NDQwMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNz
LXN3YXAtd2luZG93LW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBzaG91bGRCZVR5cGUoIncuZm9jdXMiLCAiRnVuY3Rp
b24iKTsKICAgICBzaG91bGRCZVR5cGUoIncuYmx1ciIsICJGdW5jdGlvbiIpOwogICAgIHNob3Vs
ZEJlVHlwZSgidy5wb3N0TWVzc2FnZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJ3LmNs
b3NlIiwgIncuY2xvc2UiKTsKKyAgICBzaG91bGRCZSgidy5mb2N1cyIsICJ3LmZvY3VzIik7Cisg
ICAgc2hvdWxkQmUoIncuYmx1ciIsICJ3LmJsdXIiKTsKKyAgICBzaG91bGRCZSgidy5wb3N0TWVz
c2FnZSIsICJ3LnBvc3RNZXNzYWdlIik7CisgICAgc2hvdWxkQmUoIncucG9zdE1lc3NhZ2UubGVu
Z3RoIiwgIjEiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5wb3N0TWVzc2FnZSgndGVzdCcsICcq
JykiKTsKICAgICBzaG91bGROb3RUaHJvdygidy5mb2N1cygpIik7CiAgICAgc2hvdWxkTm90VGhy
b3coIncuYmx1cigpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3NDQwMikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0xNCAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhv
ZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwg
b2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjI3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LWNvbW1vbi5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1
bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1sOiBB
ZGRlZC4KKwogMjAyMS0wMy0xMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzQzNzkuCkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3Jp
Z2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNh
Y2hpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgYXJlIGNh
Y2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBhcmUgY2FjaGVkCitQQVNT
IENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGlzIGNhY2hlZAorUEFTUyBD
cm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBpcyBjYWNoZWQKKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
YWNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9j
cm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1jYWNoaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRo
b2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNhY2hlZCBwZXIgUmVhbG0gdmlhW1tDcm9zc09yaWdpblBy
b3BlcnR5RGVzY3JpcHRvck1hcF1dPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29y
aWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1o
b3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2Jq
ZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAg
Y29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0
IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1
YWxzKHdba2V5XSwgd1trZXldLCBgdy4ke2tleX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29u
c3QgZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAg
ICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwgYHcuJHtr
ZXl9IHZpYSBbW0dldE93blByb3BlcnR5XV1gKTsKKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdp
bmRvdyBtZXRob2RzIGFyZSBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChj
b25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25z
dCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAg
ICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuZ2V0LCBkZXNjMi5nZXQsIGB3LiR7a2V5fSBn
ZXR0ZXJgKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxvY2F0aW9uIikgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCwgYHcuJHtrZXl9IHNldHRlcmApOwor
ICAgICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGFyZSBj
YWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2Fp
dCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9u
LnJlcGxhY2UsIHcubG9jYXRpb24ucmVwbGFjZSwgInZpYSBbW0dldF1dIik7CisgICAgY29uc3Qg
ZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBs
YWNlIik7CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHcubG9jYXRpb24sICJyZXBsYWNlIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS52YWx1ZSwg
ZGVzYzIudmFsdWUsICJ2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dIik7Cit9LCAiQ3Jvc3Mtb3JpZ2lu
IExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQp
OworICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3Lmxv
Y2F0aW9uLCAiaHJlZiIpOworICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYzEu
c2V0LCBkZXNjMi5zZXQpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVy
IGlzIGNhY2hlZCIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLWNvbW1vbi5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM0IEBACisidXNlIHN0cmljdCI7CisKK2NvbnN0IGNyb3NzT3JpZ2luV2lu
ZG93TWV0aG9kcyA9IFsKKyAgICB7a2V5OiAiY2xvc2UiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6
ICJmb2N1cyIsIGxlbmd0aDogMH0sCisgICAge2tleTogImJsdXIiLCBsZW5ndGg6IDB9LAorICAg
IHtrZXk6ICJwb3N0TWVzc2FnZSIsIGxlbmd0aDogMX0sCitdOworCitjb25zdCBjcm9zc09yaWdp
bldpbmRvd0FjY2Vzc29ycyA9IFsKKyAgICAid2luZG93IiwKKyAgICAic2VsZiIsCisgICAgImxv
Y2F0aW9uIiwKKyAgICAiY2xvc2VkIiwKKyAgICAiZnJhbWVzIiwKKyAgICAibGVuZ3RoIiwKKyAg
ICAidG9wIiwKKyAgICAib3BlbmVyIiwKKyAgICAicGFyZW50IiwKK10ubWFwKGtleSA9PiAoe2tl
eX0pKTsKKworY29uc3QgbWFrZUNyb3NzT3JpZ2luV2luZG93ID0gdCA9PiB7CisgICAgY29uc3Qg
aWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgY29uc3QgcGF0
aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnNsaWNlKDAsIGxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRl
eE9mKCIvIikpICsgIi9mcmFtZS5odG1sIjsKKyAgICBpZnJhbWUuc3JjID0gZ2V0X2hvc3RfaW5m
bygpLkhUVFBfUkVNT1RFX09SSUdJTiArIHBhdGg7CisKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyBy
ZXNvbHZlKGlmcmFtZS5jb250ZW50V2luZG93KTsgfTsKKyAgICAgICAgaWZyYW1lLm9uZXJyb3Ig
PSByZWplY3Q7CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICAg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7CisgICAgfSk7Cit9
OwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRo
b2RzIGhhdmUgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vz
c29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCcKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBy
ZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ2xlbmd0aCcKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJlY3QgJ2xlbmd0aCcKKwpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdp
bi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5n
dGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
cmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24t
bGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFu
ZCBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBjb3JyZWN0ICdsZW5ndGgnIHByb3BlcnR5PC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVy
LSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9z
c09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXksIGxlbmd0aH0gb2YgY3Jvc3NP
cmlnaW5XaW5kb3dNZXRob2RzKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLmxlbmd0
aCwgbGVuZ3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgbGVuZ3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0T3du
UHJvcGVydHldXWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2
ZSBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBj
b25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qg
e2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dBY2Nlc3NvcnMpIHsKKyAgICAgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXNjLmdldC5sZW5ndGgsIDAsIGB3LiR7a2V5fWApOworICAgICAgICBpZiAo
a2V5ID09PSAibG9jYXRpb24iKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0
Lmxlbmd0aCwgMSwgYHcuJHtrZXl9YCk7CisgICAgICAgIH0KKyAgICB9Cit9LCAiQ3Jvc3Mtb3Jp
Z2luIFdpbmRvdyBhY2Nlc3NvcnMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2lu
ZG93KHQpOworICAgIGFzc2VydF9lcXVhbHMody5sb2NhdGlvbi5yZXBsYWNlLmxlbmd0aCwgMSk7
CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2Nh
dGlvbiwgInJlcGxhY2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCAx
KTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVj
dCAnbGVuZ3RoJyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9
IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2Vy
dF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24g
YGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbGVuZ3RoJyIpOworPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
b3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9u
LW5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4t
b2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0
ICduYW1lJworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3Qg
J25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBj
b3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBo
YXMgY29ycmVjdCAnbmFtZScKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9j
cm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1u
YW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9j
cm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRp
dGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBj
b3JyZWN0ICduYW1lJyBwcm9wZXJ0eTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjY3Jvc3Nv
cmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKSI+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQt
aG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY3Jvc3Mtb3JpZ2luLW9i
amVjdHMtZnVuY3Rpb24tY29tbW9uLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2Pgor
PHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25z
dCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyh3W2tleV0ubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAg
Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLm5hbWUsIGtleSwgYHcuJHtrZXl9IHZpYSBb
W0dldE93blByb3BlcnR5XV1gKTsKKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRo
b2RzIGhhdmUgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChj
b25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25z
dCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lm5hbWUsIGBnZXQgJHtrZXl9YCk7CisgICAgICAgIGlm
IChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5z
ZXQubmFtZSwgYHNldCAke2tleX1gKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmln
aW4gV2luZG93IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ25hbWUnIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93
KHQpOworICAgIGFzc2VydF9lcXVhbHMody5sb2NhdGlvbi5yZXBsYWNlLm5hbWUsICJyZXBsYWNl
Iik7CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5s
b2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwg
InJlcGxhY2UiKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBo
YXMgY29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNv
bnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgImhyZWYiKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lm5hbWUsICJzZXQgaHJlZiIpOworfSwgIkNyb3NzLW9y
aWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICduYW1lJyIpOworPC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423327</attachid>
            <date>2021-03-16 07:27:24 -0700</date>
            <delta_ts>2021-03-16 16:01:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222739-20210316162722.patch</filename>
            <type>text/plain</type>
            <size>56466</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDIxLTAzLTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cg
YW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDEuIEludHJvZHVjZSBXZWFrR0NNYXA6OmVuc3Vy
ZVZhbHVlKCkgdG8gY2xlYW4gdXAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigp
IGFuZAorICAgICAgICAgICBhdm9pZCBkb3VibGUgaGFzaGluZy4gSXQgZGVjb3JhdGVzIEhhc2hN
YXA6OmVuc3VyZSgpIHRvIGd1YXJhbnRlZSBub24tbnVsbCByZXR1cm4gdmFsdWUuCisgICAgICAg
IDIuIEFzc2VydCBlYXJseSB0aGF0IEpTQ3VzdG9te0dldHRlcixTZXR0ZXJ9RnVuY3Rpb24gaXMg
Y3JlYXRlZCB3aXRoIG5vbi1udWxsIGZ1bmN0aW9uIHBvaW50ZXIuCisgICAgICAgIDMuIFJlbmFt
ZSBnZXRDdXN0b217R2V0dGVyLFNldHRlcn1GdW5jdGlvbigpIHRvIGFsaWduIHdpdGggbmV3bHkt
YWRkZWQgSlNET01HbG9iYWxPYmplY3QgbWV0aG9kcy4KKworICAgICAgICAqIHJ1bnRpbWUvSlND
dXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpjcmVhdGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpnZXRDdXN0b21HZXR0ZXJG
dW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldEN1c3RvbVNldHRlckZ1bmN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpu
b25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1dlYWtHQ01hcC5oOgorCiAyMDIxLTAzLTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFp
a2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjc0MzA4KTogVHdvIGFz
c2VydGlvbnMgaW4gSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KCkgYXJlIGZhaWxp
bmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNzQ0MDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsOSArNDAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0
dGVyRnVuCiAKICAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJGdW5jdGlv
biA9IGpzQ2FzdDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0KICAg
ICBHZXRWYWx1ZUZ1bmMgZ2V0dGVyID0gY3VzdG9tR2V0dGVyRnVuY3Rpb24tPmdldHRlcigpOwot
ICAgIEFTU0VSVChnZXR0ZXIpOwogCiAgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gY3VzdG9t
R2V0dGVyRnVuY3Rpb24tPmRvbUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpCkBAIC02Miw2ICs2MCw3IEBA
IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyRnUKIAogSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUs
IEdldFZhbHVlRnVuYyBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRv
bUF0dHJpYnV0ZSkKIHsKKyAgICBBU1NFUlQoZ2V0dGVyKTsKICAgICBOYXRpdmVFeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbUdldHRlckZ1bmN0aW9uQ2Fs
bCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1
c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1
bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1
dGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3NDQwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGN1c3RvbVMKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21TZXR0ZXJGdW5jdGlvbkNh
bGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CiB7CiAgICAgUHV0VmFsdWVGdW5jIHNldHRlciA9IGpzQ2FzdDxKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+c2V0dGVyKCk7Ci0gICAgQVNTRVJUKHNldHRl
cik7CiAgICAgc2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00OSw2ICs0
OCw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tU2V0dGVyRnUKIAogSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0
eU5hbWUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCiB7CisgICAgQVNTRVJUKHNldHRlcik7CiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21T
ZXR0ZXJGdW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmco
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24o
dm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzZXR0ZXIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjc0
NDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTIxLDI0ICszNTIxLDE4IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmFs
bG9jYXRlTW9yZU91dE9mTGkKICAgICByZXR1cm4gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoYnV0dGVyZmx5KCksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXpl
LCBuZXdTaXplKTsKIH0KIAotc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGdldEN1c3Rv
bUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0
dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK3N0YXRpYyBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKiBjcmVhdGVDdXN0b21HZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWVG
dW5jLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCiB7Ci0g
ICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxP
YmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KGdldFZhbHVlRnVuYyk7Ci0gICAg
aWYgKCFjdXN0b21HZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBjdXN0b21HZXR0ZXJGdW5jdGlv
biA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRWYWx1ZUZ1bmMsIGRvbUF0dHJpYnV0ZSk7Ci0g
ICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5zZXQoZ2V0VmFs
dWVGdW5jLCBjdXN0b21HZXR0ZXJGdW5jdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBjdXN0b21H
ZXR0ZXJGdW5jdGlvbjsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5j
dGlvbk1hcCgpLmVuc3VyZVZhbHVlKGdldFZhbHVlRnVuYywgWyZdIHsKKyAgICAgICAgcmV0dXJu
IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRWYWx1ZUZ1bmMsIGRvbUF0dHJpYnV0ZSk7CisgICAg
fSk7CiB9CiAKLXN0YXRpYyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBnZXRDdXN0b21TZXR0ZXJG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWVGdW5jKQorc3RhdGljIEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24qIGNyZWF0ZUN1c3RvbVNldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1
ZUZ1bmMpCiB7Ci0gICAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogY3VzdG9tU2V0dGVyRnVuY3Rp
b24gPSBnbG9iYWxPYmplY3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KHB1dFZhbHVl
RnVuYyk7Ci0gICAgaWYgKCFjdXN0b21TZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBjdXN0b21T
ZXR0ZXJGdW5jdGlvbiA9IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBwdXRWYWx1ZUZ1bmMpOwotICAg
ICAgICBnbG9iYWxPYmplY3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuc2V0KHB1dFZhbHVl
RnVuYywgY3VzdG9tU2V0dGVyRnVuY3Rpb24pOwotICAgIH0KLSAgICByZXR1cm4gY3VzdG9tU2V0
dGVyRnVuY3Rpb247CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rp
b25NYXAoKS5lbnN1cmVWYWx1ZShwdXRWYWx1ZUZ1bmMsIFsmXSB7CisgICAgICAgIHJldHVybiBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgcHV0VmFsdWVGdW5jKTsKKyAgICB9KTsKIH0KIAogYm9vbCBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKQEAgLTM1NTksOSArMzU1Myw5IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigKICAgICAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3Io
KHNsb3QuYXR0cmlidXRlcygpIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSAmIH5Qcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
c2xvdEJhc2VHbG9iYWxPYmplY3QgPSBzbG90LnNsb3RCYXNlKCktPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgICAgIGlmIChzbG90LmN1c3RvbUdldHRlcigpKQotICAgICAgICAgICAgZGVzY3JpcHRv
ci5zZXRHZXR0ZXIoZ2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21HZXR0ZXIoKSwgc2xvdC5kb21BdHRyaWJ1dGUoKSkp
OworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoY3JlYXRlQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21HZXR0
ZXIoKSwgc2xvdC5kb21BdHRyaWJ1dGUoKSkpOwogICAgICAgICBpZiAoc2xvdC5jdXN0b21TZXR0
ZXIoKSkKLSAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGdldEN1c3RvbVNldHRlckZ1
bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3VzdG9tU2V0
dGVyKCkpKTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGNyZWF0ZUN1c3RvbVNl
dHRlckZ1bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QuY3Vz
dG9tU2V0dGVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc2xv
dC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCShyZXZpc2lvbiAyNzQ0MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDE0LDkgKzQxNCw0IEBAIGlubGlu
ZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0KICAgICB9CiB9CiAKLXRlbXBsYXRl
PFJhd05hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBFbmNvZGVkSlNW
YWx1ZSBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9i
YWxPYmplY3QsIGxlbmd0aCwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rp
b24pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMjc0NDA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIFdURk1vdmUodmFs
dWUpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIFZhbHVl
QXJnKiBlbnN1cmVWYWx1ZShjb25zdCBLZXlUeXBlJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmVuc3VyZShrZXksIHN0ZDo6
Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CisgICAgICAgIFZhbHVlQXJnKiB2YWx1ZSA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkgJiYgIXZhbHVlKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCiAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLnJlbW92ZShrZXkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDQxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDMtMTUgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdp
biBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwg
Z2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgRm9yIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzLCBXaW5kb3cgYW5kIExvY2F0
aW9uIG9iamVjdHMgcmV0dXJuIGRpZmZlcmVudCBKU0Z1bmN0aW9uCisgICAgICAgIGluc3RhbmNl
cyBvbiBldmVyeSBbW0dldF1dLiBUaGUgaW50ZW50IHdhcyB0byBlbnN1cmUgaXNvbGF0aW9uIGJ5
IHN1cHBseWluZyBkaWZmZXJlbnQgUmVhbG1zIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IGZ1bmN0
aW9uIG9iamVjdHMuIEhvd2V2ZXIsIHdpdGhpbiB0aGUgc2FtZSBjYWxsZWUgUmVhbG0sIHRoaXMg
bWFrZXMgc3Vic2VxdWVudCBsb29rdXBzCisgICAgICAgIG9mIGEgY3Jvc3Mtb3JpZ2luIG1ldGhv
ZCAvIGFjY2Vzc29yIGZhaWwgcmVmZXJlbmNlIGVxdWFsaXR5IHRlc3QsIHdoaWNoIGlzIHJhdGhl
ciBjb25mdXNpbmc6CisKKyAgICAgICAgICAgIGBjcm9zc09yaWdpbldpbmRvdy5mb2N1cyA9PT0g
Y3Jvc3NPcmlnaW5XaW5kb3cuZm9jdXMgLy8gPT4gZmFsc2VgCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXBsZW1lbnRzIFtbQ3Jvc3NPcmlnaW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXSwgYnJpbmdp
bmcgY29uc2lzdGVudCBmdW5jdGlvbiBpZGVudGl0eQorICAgICAgICBhbmQgYWxpZ25pbmcgV2Vi
S2l0IHdpdGggdGhlIHNwZWMgWzFdLCBCbGluaywgYW5kIEdlY2tvLiBGb3IgY29udmVuaWVuY2Us
IGNhY2hlIG1hcHMgYXJlIGFkZGVkIHRvCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0ICh0byBh
Y2NvbW1vZGF0ZSBSZW1vdGVET01XaW5kb3cpIGFuZCBjb3ZlciBib3RoIFdpbmRvdyBhbmQgTG9j
YXRpb24gb2JqZWN0cy4KKworICAgICAgICBBcyBhIGNhY2hlIG1hcCBrZXksIGEgcGFpciBvZiBs
ZXhpY2FsIGdsb2JhbCBvYmplY3QgYW5kIHJhdyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQsIHdo
aWNoIGd1YXJhbnRlZXMKKyAgICAgICAgY29ycmVjdG5lc3MgZXZlbiBpZiBXaW5kb3cgYW5kIExv
Y2F0aW9uIHdvdWxkIGV4cG9zZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFt
ZS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgOSBjdXN0b20gZ2V0dGVycywgYWRkcyBy
dW50aW1lIGxvb2t1cCBmb3IgInNob3dNb2RhbERpYWxvZyIgKHdoaWNoIGlzIHJhcmUpLAorICAg
ICAgICBhbmQgcmVtb3ZlcyBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gZXh0ZW5kZWQgYXR0cmli
dXRlIGFzIGl0J3Mgbm93IHVudXNlZCBhbmQgbm9uLXRyaXZpYWwgdG8gZ2VuZXJhdGUuCisKKyAg
ICAgICAgQWxzbywgZml4ZXMgY3Jvc3MtcmVhbG0gYHBvc3RNZXNzYWdlLmxlbmd0aGAgdG8gZXF1
YWwgMSBhcyBwZXIgV2ViSURMLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHlo
ZWxwZXItKC1vLC1wLSkKKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rp
b24tbmFtZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3Jp
Z2luRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0
ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJp
Y3RlZEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChXZWJD
b3JlOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRs
OgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5p
ZGw6CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsOgorCiAyMDIxLTAzLTE1ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyU3R5bGU6Omdl
dFJvdW5kZWRJbm5lckJvcmRlckZvciBzaG91bGQgbmV2ZXIgcHJvZHVjZSBhIHJlY3Qgd2l0aCBu
ZWdhdGl2ZSB3aWR0aC9oZWlnaHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NDQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsOSArNTQsMTMgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dh
c21TdHJlYW1pbmdDb21waWxlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01h
cElubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
QEAgLTc1LDYgKzc5LDggQEAgSlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KFZN
JgogICAgICwgbV93b3JsZChXVEZNb3ZlKHdvcmxkKSkKICAgICAsIG1fd29ybGRJc05vcm1hbCht
X3dvcmxkLT5pc05vcm1hbCgpKQogICAgICwgbV9idWlsdGluSW50ZXJuYWxGdW5jdGlvbnModm0p
CisgICAgLCBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXAodm0pCisgICAgLCBtX2Nyb3NzT3JpZ2lu
R2V0dGVyU2V0dGVyTWFwKHZtKQogewogfQogCkBAIC0yOTgsNiArMzA0LDI2IEBAIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OmNsZWFyRE9NR3VhcmRlZE8KICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIo
KTsKIH0KIAorSlNGdW5jdGlvbiogSlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2lu
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgQ3Jvc3NPcmlnaW5NYXBLZXkga2V5ID0gc3RkOjptYWtlX3BhaXIobGV4
aWNhbEdsb2JhbE9iamVjdCwgbmF0aXZlRnVuY3Rpb24ucmF3UG9pbnRlcigpKTsKKyAgICByZXR1
cm4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwLmVuc3VyZVZhbHVlKGtleSwgWyZdIHsKKyAgICAg
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBsZW5ndGgsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG5h
dGl2ZUZ1bmN0aW9uKTsKKyAgICB9KTsKK30KKworR2V0dGVyU2V0dGVyKiBKU0RPTUdsb2JhbE9i
amVjdDo6Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBn
ZXR0ZXIsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCit7CisgICAgQVNTRVJUKGdldHRlciB8fCBzZXR0
ZXIpOworICAgIENyb3NzT3JpZ2luTWFwS2V5IGtleSA9IHN0ZDo6bWFrZV9wYWlyKGxleGljYWxH
bG9iYWxPYmplY3QsIGdldHRlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldHRlcikgOiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihzZXR0ZXIpKTsKKyAgICByZXR1cm4gbV9jcm9zc09yaWdp
bkdldHRlclNldHRlck1hcC5lbnN1cmVWYWx1ZShrZXksIFsmXSB7CisgICAgICAgIGF1dG8mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgcmV0dXJuIEdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgZ2V0dGVyID8g
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldHRlcikgOiBudWxscHRyLAorICAgICAgICAgICAgc2V0dGVyID8gSlND
dXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNldHRlcikgOiBudWxscHRyKTsKKyAgICB9KTsKK30KKwogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKIC8vIGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlvL3NwZWMvd2ViLWFw
aS9pbmRleC5odG1sI2NvbXBpbGUtYS1wb3RlbnRpYWwtd2ViYXNzZW1ibHktcmVzcG9uc2UKIHN0
YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIEpTQzo6
V2FzbTo6Q29tcGlsZXJNb2RlIGNvbXBpbGVyTW9kZSwgSlNDOjpKU09iamVjdCogaW1wb3J0T2Jq
ZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAyNzQ0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2Nr
RHVyaW5nTWFya2luZy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgzLDYgKzg0LDkgQEAgcHVibGljOgogCiAgICAg
SlNDOjpKU1Byb3h5JiBwcm94eSgpIGNvbnN0IHsgQVNTRVJUKG1fcHJveHkpOyByZXR1cm4gKm1f
cHJveHkuZ2V0KCk7IH0KIAorICAgIEpTQzo6SlNGdW5jdGlvbiogY3JlYXRlQ3Jvc3NPcmlnaW5G
dW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6TmF0
aXZlRnVuY3Rpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNDOjpHZXR0ZXJTZXR0ZXIqIGNy
ZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpHZXRWYWx1ZUZ1bmMsIEpTQzo6UHV0VmFsdWVGdW5jKTsKKwogcHVi
bGljOgogICAgIH5KU0RPTUdsb2JhbE9iamVjdCgpOwogCkBAIC0xMjQsNyArMTI4LDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRCdWlsdGluR2xvYmFscyhKU0M6OlZNJik7CiAgICAgZnJpZW5k
IHZvaWQgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnM6OmluaXRpYWxpemUoSlNET01HbG9iYWxP
YmplY3QmKTsKIAorICAgIHVzaW5nIENyb3NzT3JpZ2luTWFwS2V5ID0gc3RkOjpwYWlyPEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB2b2lkKj47CisKICAgICBKU0J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9u
cyBtX2J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9uczsKKyAgICBKU0M6OldlYWtHQ01hcDxDcm9zc09y
aWdpbk1hcEtleSwgSlNDOjpKU0Z1bmN0aW9uPiBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXA7Cisg
ICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5NYXBLZXksIEpTQzo6R2V0dGVyU2V0dGVyPiBt
X2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgQ29uc3Ry
dWN0b3JDbGFzcz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3NDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIg
KzQ4LDkgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnRlcm5hbEZ1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTWljcm90
YXNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9va3VwLmg+CkBAIC02Nyw1OCArNjQs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29w
ZW5EYXRhYmFzZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURP
TVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNo
aW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5n
KTsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfd2Via2l0KTsKICNlbmRpZgogCi1KU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25D
YWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVy
LCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRl
ckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXIsIDA+KGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9N
V2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkp
Ci17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1v
dGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJl
dHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9jbG9zZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1K
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X2ZvY3VzTm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2Fj
aGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fZm9jdXMsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNh
Y2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNG
dW5jdGlvbkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzLCAwPihn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rp
b25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2Fn
ZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0
aW9uR2V0dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2UsIDI+
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KIHZvaWQgSlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCiB7CkBAIC0xNTcsNDUgKzEwNiwzNCBAQCBib29sIGpzRE9NV2luZG93R2V0T3du
UHJvcGVydHlTbG90UmVzdHJpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
Y3Jvc3NvcmlnaW5nZXRvd25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKQogCiAgICAgLy8gVGhlc2Ug
YXJlIHRoZSBmdW5jdGlvbnMgd2UgYWxsb3cgYWNjZXNzIHRvIGNyb3NzLW9yaWdpbiAoRG9Ob3RD
aGVja1NlY3VyaXR5IGluIElETCkuCi0gICAgLy8gQWx3YXlzIHByb3ZpZGUgdGhlIG9yaWdpbmFs
IGZ1bmN0aW9uLCBvbiBhIGZyZXNoIHVuY2FjaGVkIGZ1bmN0aW9uIG9iamVjdC4KLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5ibHVyUHVibGljTmFtZSgpKSB7Ci0gICAgICAg
IHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdp
bmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcgOiBqc0RPTVdpbmRvd0luc3RhbmNl
RnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQdWJsaWNOYW1lKCkpIHsK
LSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpzUmVt
b3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcgOiBqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fY2xvc2VOb25DYWNoaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZvY3VzUHVibGlj
TmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1v
dGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fZm9jdXNOb25DYWNoaW5nIDog
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5w
b3N0TWVzc2FnZVB1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9N
V2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bv
c3RNZXNzYWdlTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVz
c2FnZU5vbkNhY2hpbmcpOworICAgIGF1dG8qIGNsYXNzSW5mbyA9IHdpbmRvd1R5cGUgPT0gRE9N
V2luZG93VHlwZTo6UmVtb3RlID8gSlNSZW1vdGVET01XaW5kb3c6OmluZm8oKSA6IEpTRE9NV2lu
ZG93OjppbmZvKCk7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQ
dWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mb2N1
c1B1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmJs
dXJQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5w
b3N0TWVzc2FnZVB1YmxpY05hbWUoKSkgeworICAgICAgICBhdXRvKiBlbnRyeSA9IGNsYXNzSW5m
by0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0
byoganNGdW5jdGlvbiA9IHRoaXNPYmplY3QtPmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oJmxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0s
IGpzRnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBXaGVu
IGFjY2Vzc2luZyBjcm9zcy1vcmlnaW4ga25vd24gV2luZG93IHByb3BlcnRpZXMsIHdlIGFsd2F5
cyB1c2UgdGhlIG9yaWdpbmFsIHByb3BlcnR5IGdldHRlciwKICAgICAvLyBldmVuIGlmIHRoZSBw
cm9wZXJ0eSB3YXMgcmVtb3ZlZCAvIHJlZGVmaW5lZC4gQXMgb2YgZWFybHkgMjAxNiwgdGhpcyBt
YXRjaGVzIEZpcmVmb3ggYW5kIENocm9tZSdzCiAgICAgLy8gYmVoYXZpb3IuCi0gICAgYXV0byog
Y2xhc3NJbmZvID0gd2luZG93VHlwZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBKU1JlbW90
ZURPTVdpbmRvdzo6aW5mbygpIDogSlNET01XaW5kb3c6OmluZm8oKTsKLSAgICBpZiAoYXV0byog
ZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFt
ZSkpIHsKLSAgICAgICAgLy8gT25seSBhbGxvdyBhY2Nlc3MgdG8gdGhlc2Ugc3BlY2lmaWMgcHJv
cGVydGllcy4KLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRp
b25QdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFt
ZXMuY2xvc2VkUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVp
bHRpbk5hbWVzLnNlbGZQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmZyYW1lc1B1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwg
cHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNOYW1lKCkKLSAgICAgICAg
ICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucGFyZW50UHVibGljTmFtZSgpCi0g
ICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnRvcFB1YmxpY05hbWUo
KSkgewotICAgICAgICAgICAgYXV0byogZ2V0dGVyID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJv
cGVydHlHZXR0ZXIoKSk7Ci0gICAgICAgICAgICBhdXRvKiBzZXR0ZXIgPSBwcm9wZXJ0eU5hbWUg
PT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpID8gSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRy
eS0+cHJvcGVydHlQdXR0ZXIoKSkgOiBudWxscHRyOwotICAgICAgICAgICAgYXV0byogZ2V0dGVy
U2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
ZXR0ZXIsIHNldHRlcik7Ci0gICAgICAgICAgICBzbG90LnNldEdldHRlclNsb3QodGhpc09iamVj
dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtLCBnZXR0ZXJTZXR0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
KyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy53aW5kb3dQdWJsaWNOYW1lKCkK
KyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5zZWxmUHVibGljTmFtZSgp
CisgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNO
YW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZWRQdWJs
aWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mcmFtZXNQ
dWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aAorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnRvcFB1Ymxp
Y05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLm9wZW5lclB1
YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVu
dFB1YmxpY05hbWUoKSkgeworICAgICAgICBhdXRvKiBlbnRyeSA9IGNsYXNzSW5mby0+c3RhdGlj
UHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0byogc2V0dGVy
ID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKSA/IGVu
dHJ5LT5wcm9wZXJ0eVB1dHRlcigpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byogZ2V0dGVyU2V0
dGVyID0gdGhpc09iamVjdC0+Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIoJmxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCksIHNldHRl
cik7CisgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRl
cik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIENoZWNrIGZvciBjaGls
ZCBmcmFtZXMgYnkgbmFtZSBiZWZvcmUgYnVpbHQtaW4gcHJvcGVydGllcyB0byBtYXRjaCBNb3pp
bGxhLiBUaGlzIGRvZXMKQEAgLTI2NSw3ICsyMDMsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgICAgIC8vIERldGVjdCB3aGVuIHdlJ3JlIGdldHRpbmcg
dGhlIHByb3BlcnR5ICdzaG93TW9kYWxEaWFsb2cnLCB0aGlzIGlzIGRpc2FibGVkLCBhbmQgaGFz
IGl0cyBvcmlnaW5hbCB2YWx1ZS4KICAgICAgICAgYm9vbCBpc1Nob3dNb2RhbERpYWxvZ0FuZFNo
b3VsZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zaG93
TW9kYWxEaWFsb2dQdWJsaWNOYW1lKCkKICAgICAgICAgICAgICYmICghZnJhbWUgfHwgIURPTVdp
bmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nKCpmcmFtZSkpCi0gICAgICAgICAgICAmJiBzbG90Lmlz
VmFsdWUoKSAmJiBpc0hvc3RGdW5jdGlvbihzbG90LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSksIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9zaG93TW9kYWxE
aWFsb2cpOworICAgICAgICAgICAgJiYgc2xvdC5pc1ZhbHVlKCkgJiYgaXNIb3N0RnVuY3Rpb24o
c2xvdC5nZXRWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpLCBzX2luZm8u
c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKS0+ZnVuY3Rpb24oKSk7CiAg
ICAgICAgIC8vIFVubGVzcyB3ZSdyZSBpbiB0aGUgc2hvd01vZGFsRGlhbG9nIHNwZWNpYWwgY2Fz
ZSwgd2UncmUgZG9uZS4KICAgICAgICAgaWYgKCFpc1Nob3dNb2RhbERpYWxvZ0FuZFNob3VsZEhp
ZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyNzQ0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMjEgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Mb29rdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNMb2NhdGlvbkluc3RhbmNl
RnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOwotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8
anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZSwgMT4oZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwotfQotCiBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNM
b2NhdGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CkBAIC02NCw3ICs1NSw5IEBAIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKIAogICAgIC8vIFdlIG9ubHkgYWxs
b3cgYWNjZXNzIHRvIExvY2F0aW9uLnJlcGxhY2UoKSBjcm9zcyBvcmlnaW4uCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlKSB7Ci0gICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKCZ0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwganNMb2NhdGlv
bkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOworICAgICAgICBhdXRvKiBlbnRy
eSA9IEpTTG9jYXRpb246OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgYXV0byoganNGdW5jdGlvbiA9IHRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCktPmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpKTsK
KyAgICAgICAgc2xvdC5zZXRWYWx1ZSgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc0Z1bmN0aW9uKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC03Miw4ICs2NSw3IEBAIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKICAgICAvLyBhIGRlc2NyaXB0b3IgdGhhdCBoYXMg
YSBzZXR0ZXIgYnV0IG5vIGdldHRlci4KICAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYg
cHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgYXV0byogZW50
cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3Bl
cnR5TmFtZSk7Ci0gICAgICAgIGF1dG8qIHNldHRlciA9IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246
OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnBy
b3BlcnR5UHV0dGVyKCkpOwotICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIG51bGxwdHIsIHNldHRlcik7Cisg
ICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCktPmNy
ZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIG51bGxwdHIsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKICAgICAgICAgc2xvdC5z
ZXRHZXR0ZXJTbG90KCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzQ0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMzA2Niw5ICszMDY2LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgbXkgJG51bUN1c3Rv
bU9wZXJhdGlvbnMgPSAwOwogICAgIG15ICRudW1DdXN0b21BdHRyaWJ1dGVzID0gMDsKIAotICAg
IG15ICRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucyA9IDA7Ci0gICAgbXkgJGhhc0Zvcndh
cmREZWNsYXJpbmdBdHRyaWJ1dGVzID0gMDsKLQogICAgIG15ICRoYXNET01KSVRBdHRyaWJ1dGVz
ID0gMDsKIAogICAgICMgQXR0cmlidXRlIGFuZCBmdW5jdGlvbiBlbnVtcwpAQCAtMzA4NCw4ICsz
MDgxLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgJGhhc0RPTUpJVEF0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07Ci0KLSAgICAgICAgICAgICRoYXNGb3J3YXJkRGVj
bGFyaW5nQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxNDQsNyAr
MzEzOSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9u
IChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgICRudW1DdXN0b21PcGVyYXRp
b25zKysgaWYgSGFzQ3VzdG9tTWV0aG9kKCRvcGVyYXRpb24pOwotICAgICAgICAkaGFzRm9yd2Fy
ZERlY2xhcmluZ09wZXJhdGlvbnMgPSAxIGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgIH0KIAogICAgIGlmICgkbnVtQ3VzdG9t
T3BlcmF0aW9ucyA+IDApIHsKQEAgLTMyNzAsNTIgKzMyNjQsNiBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKIAogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAk
Y2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9u
KCRpbnRlcmZhY2UpOwogCi0gICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucykg
ewotICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0
aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRv
cGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0g
PiAxOwotICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAgIGlmICgkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKLSAgICAgICAgICAg
ICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwotICAg
ICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHQpIHsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOwotICAgICAgICAg
ICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0Q29uZGl0aW9uYWxGb3JPcGVyYXRpb25D
b25zaWRlcmluZ092ZXJsb2Fkcygkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJp
YnV0ZSkgOiB1bmRlZjsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTigke2Z1bmN0aW9uTmFtZX0pO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0g
ICAgICAgIH0KLQotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmln
aHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCJc
biIpOwotICAgIH0KLQotICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMpIHsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gQXR0cmlidXRlc1xuXG4iKTsKLSAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0g
ICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntG
b3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVy
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKCR7Z2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgk
YXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVT
ZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKCR7
c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgfQotICAg
IH0KLQogICAgICMgQ2hlY2tKU0Nhc3QgU25pcHBldCBmdW5jdGlvbi4KICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgewogICAgICAgICAkaGVhZGVySW5j
bHVkZXN7IjxKYXZhU2NyaXB0Q29yZS9TbmlwcGV0Lmg+In0gPSAxOwpAQCAtNDMwNyw3ICs0MjU1
LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChA
eyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRp
b24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwot
ICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3
YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPm5h
bWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKIApAQCAtNDM1Myw3ICs0MzAwLDYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0
dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVy
fTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlz
aW9uIDI3NDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOSArMjIzLDYgQEAKICAgICAgICAgICAg
ICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0V4cG9zZWQiCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJGb3J3YXJkRGVjbGFyZUluSGVhZGVy
IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJh
dGlvbiJdCi0gICAgICAgIH0sCiAgICAgICAgICJHZW5lcmF0ZUlzUmVhY2hhYmxlIjogewogICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAi
dmFsdWVzIjogWyIiLCAiSW1wbCIsICJJbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0IiwgIkltcGxD
YW52YXNCYXNlIiwgIkltcGxEb2N1bWVudCIsICJJbXBsRWxlbWVudFJvb3QiLCAiSW1wbE93bmVy
Tm9kZVJvb3QiLCAiSW1wbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiUmVhY2hhYmxlRnJvbURP
TVdpbmRvdyIsICJSZWFjaGFibGVGcm9tTmF2aWdhdG9yIl0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHJldmlzaW9uIDI3NDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTEgKzYyLDExIEBACiAgICAgW1JlcGxh
Y2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCBzdGF0dXNiYXI7CiAgICAgW1JlcGxh
Y2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgQmFyUHJvcCB0b29sYmFyOwogICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgc3RhdHVzOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUlu
Y3VtYmVudERvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgY2xvc2Uo
KTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwg
Q2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIFtEb05v
dENoZWNrU2VjdXJpdHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKICAgICB1
bmRlZmluZWQgc3RvcCgpOwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUluY3Vt
YmVudFdpbmRvdywgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGZvY3VzKCk7Ci0g
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVk
IGJsdXIoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1JbmN1bWJlbnRXaW5k
b3ddIHVuZGVmaW5lZCBmb2N1cygpOworICAgIFtEb05vdENoZWNrU2VjdXJpdHldIHVuZGVmaW5l
ZCBibHVyKCk7CiAKICAgICAvLyBvdGhlciBicm93c2luZyBjb250ZXh0cwogICAgIFtSZXBsYWNl
YWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5IGZyYW1lczsKQEAgLTkxLDggKzkxLDggQEAKICAgICBET01T
dHJpbmc/IHByb21wdChvcHRpb25hbCBET01TdHJpbmcgbWVzc2FnZSA9ICIiLCBvcHRpb25hbCBE
T01TdHJpbmcgZGVmYXVsdFZhbHVlID0gIiIpOwogICAgIHVuZGVmaW5lZCBwcmludCgpOwogCi0g
ICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1
cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9u
YWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKLSAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5LCBGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBt
ZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7CisgICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0
eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwg
VVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zl
ciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywgRG9O
b3RDaGVja1NlY3VyaXR5LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdl
KGFueSBtZXNzYWdlLCBvcHRpb25hbCBXaW5kb3dQb3N0TWVzc2FnZU9wdGlvbnMgb3B0aW9ucyk7
CiAKIAogICAgIC8vIE9ic29sZXRlOiBTdGlsbCBwYXJ0IG9mIHRoZSBIVE1MIHNwZWNpZmljYXRp
b24gKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI1dpbmRvdy1wYXJ0aWFsKS4KQEAgLTEx
OSw3ICsxMTksNyBAQAogICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1JT1NfR0VTVFVS
RV9FVkVOVFNdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25nZXN0dXJlc3RhcnQ7CiAKICAgICAv
LyBOb24tc3RhbmRhcmQ6IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBIVE1MIHNwZWNp
ZmljYXRpb24gYW5kIGJ5IG90aGVyIGJyb3dzZXJzLgotICAgIFtDdXN0b20sIEZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwg
YW55IGRpYWxvZ0FyZ3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CisgICAgW0N1
c3RvbV0gYW55IHNob3dNb2RhbERpYWxvZyhET01TdHJpbmcgdXJsLCBvcHRpb25hbCBhbnkgZGlh
bG9nQXJncywgb3B0aW9uYWwgRE9NU3RyaW5nIGZlYXR1cmVBcmdzKTsKIAogICAgIC8vIE5vbi1z
dGFuZGFyZDogc2hvdWxkIHByb2JhYmx5IGRlcHJlY2F0ZSB0aGlzIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2NTMpLgogICAgIC8vIEJsaW5rIGFscmVhZHkgZGVw
cmVjYXRlZCBpdCAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9k
ZXRhaWw/aWQ9NDM3NTY5KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24g
Mjc0NDA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzMsOSArMzMsOSBAQAogICAgIGF0dHJpYnV0ZSBTY3JvbGxSZXN0b3JhdGlvbiBzY3Jv
bGxSZXN0b3JhdGlvbjsKICAgICBbQ3VzdG9tXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IHN0YXRl
OwogCi0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRl
ZmluZWQgYmFjaygpOwotICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhl
YWRlcl0gdW5kZWZpbmVkIGZvcndhcmQoKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndh
cmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBnbyhvcHRpb25hbCBsb25nIGRlbHRhID0gMCk7
CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgYmFjaygpOworICAgIFtDYWxsV2l0
aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGZvcndhcmQoKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRd
IHVuZGVmaW5lZCBnbyhvcHRpb25hbCBsb25nIGRlbHRhID0gMCk7CiAKICAgICAvLyBGSVhNRTog
dGl0bGUgc2hvdWxkIG5vdCBiZSBudWxsYWJsZSBhcyBwZXIgdGhlIEhUTUwgc3BlY2lmaWNhdGlv
bi4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwdXNoU3RhdGUoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIGRhdGEsIERPTVN0cmluZz8gdGl0bGUsIG9wdGlvbmFsIFVTVlN0cmluZz8g
dXJsID0gbnVsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjc0
NDA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDkgKzQ1LDkgQEAKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2Fs
bFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHlPblNldHRl
cl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwogCi0gICAgW0NhbGxXaXRo
PUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb24sIEZvcndhcmREZWNs
YXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7Ci0gICAgW0RvTm90
Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJv
d0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIHJlcGxhY2UoVVNW
U3RyaW5nIHVybCk7Ci0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdywgRm9yd2FyZERlY2xhcmVJ
bkhlYWRlcl0gdW5kZWZpbmVkIHJlbG9hZCgpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cm
Rmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmlu
ZyB1cmwpOworICAgIFtEb05vdENoZWNrU2VjdXJpdHksIENhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmlu
ZyB1cmwpOworICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3ddIHVuZGVmaW5lZCByZWxvYWQoKTsK
IAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0ZXMKICAgICBbU2V0dGVyQ2FsbFdp
dGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHByb3RvY29s
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbAkocmV2aXNpb24g
Mjc0NDA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTQgQEAKICAgICBbTGVnYWN5VW5mb3JnZWFibGUsIElt
cGxlbWVudGVkQXM9c2VsZl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHdpbmRvdzsK
ICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBzZWxmOwog
ICAgIFtQdXRGb3J3YXJkcz1ocmVmLCBMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIExvY2F0aW9uPyBsb2NhdGlvbjsgLy8gRklYTUU6IFNob3VsZCBub3QgYmUgbnVsbGFibGUu
Ci0gICAgW0NhbGxXaXRoPUluY3VtYmVudERvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVy
XSB1bmRlZmluZWQgY2xvc2UoKTsKLSAgICBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOwotICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5k
b3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygpOwotICAgIFtGb3J3
YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgYmx1cigpOworICAgIFtDYWxsV2l0aD1JbmN1
bWJlbnREb2N1bWVudF0gdW5kZWZpbmVkIGNsb3NlKCk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY2xvc2VkOworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5l
ZCBmb2N1cygpOworICAgIHVuZGVmaW5lZCBibHVyKCk7CiAgICAgW1JlcGxhY2VhYmxlLCBJbXBs
ZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CiAg
ICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7
CiAgICAgW0xlZ2FjeVVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/
IHRvcDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IG9wZW5lcjsKICAgICBb
UmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwotICAg
IFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJn
ZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3ddIHVuZGVmaW5lZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgc2VxdWVu
Y2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzQ0MDQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAyMS0wMy0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMgb2YgV2luZG93
IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwgb2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9j
ZXNzLXN3YXAtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbDoKKwogMjAyMS0wMy0xNCAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgZHlu
YW1pYyBpbXBvcnQgaW4gc2VydmljZSB3b3JrZXIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAt
d2luZG93LW9wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQ0MDQpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTEgQEAgUEFTUyB3LmNsb3NlIGlzIGFu
IGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcuZm9jdXMgaXMgYW4gaW5zdGFuY2Ugb2YgRnVu
Y3Rpb24KIFBBU1Mgdy5ibHVyIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcucG9z
dE1lc3NhZ2UgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1Mgdy5jbG9zZSBpcyB3LmNs
b3NlCitQQVNTIHcuZm9jdXMgaXMgdy5mb2N1cworUEFTUyB3LmJsdXIgaXMgdy5ibHVyCitQQVNT
IHcucG9zdE1lc3NhZ2UgaXMgdy5wb3N0TWVzc2FnZQorUEFTUyB3LnBvc3RNZXNzYWdlLmxlbmd0
aCBpcyAxCiBQQVNTIHcucG9zdE1lc3NhZ2UoJ3Rlc3QnLCAnKicpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyB3LmZvY3VzKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHcu
Ymx1cigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93
LW9wZW4uaHRtbAkocmV2aXNpb24gMjc0NDA0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiwxMSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHNob3VsZEJlVHlwZSgi
dy5mb2N1cyIsICJGdW5jdGlvbiIpOwogICAgIHNob3VsZEJlVHlwZSgidy5ibHVyIiwgIkZ1bmN0
aW9uIik7CiAgICAgc2hvdWxkQmVUeXBlKCJ3LnBvc3RNZXNzYWdlIiwgIkZ1bmN0aW9uIik7Cisg
ICAgc2hvdWxkQmUoIncuY2xvc2UiLCAidy5jbG9zZSIpOworICAgIHNob3VsZEJlKCJ3LmZvY3Vz
IiwgIncuZm9jdXMiKTsKKyAgICBzaG91bGRCZSgidy5ibHVyIiwgIncuYmx1ciIpOworICAgIHNo
b3VsZEJlKCJ3LnBvc3RNZXNzYWdlIiwgIncucG9zdE1lc3NhZ2UiKTsKKyAgICBzaG91bGRCZSgi
dy5wb3N0TWVzc2FnZS5sZW5ndGgiLCAiMSIpOwogICAgIHNob3VsZE5vdFRocm93KCJ3LnBvc3RN
ZXNzYWdlKCd0ZXN0JywgJyonKSIpOwogICAgIHNob3VsZE5vdFRocm93KCJ3LmZvY3VzKCkiKTsK
ICAgICBzaG91bGROb3RUaHJvdygidy5ibHVyKCkiKTsKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc0NDY0KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTE1ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBDYWNoZSBj
cm9zcy1vcmlnaW4gbWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBl
ciBsZXhpY2FsIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMt
ZnVuY3Rpb24tY2FjaGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mt
b3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jv
c3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5j
dGlvbi1uYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAzLTE1ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSB0aGUgbGF5b3V0IHRlc3QgMmQucGF0
aC5zdHJva2Uuc2NhbGUyLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMv
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2FjaGluZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2lu
L2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hp
bmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENy
b3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBhcmUgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBX
aW5kb3cgYWNjZXNzb3JzIGFyZSBjYWNoZWQKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBy
ZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJl
ZmAgc2V0dGVyIGlzIGNhY2hlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLWNhY2hpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY2Fj
aGVkIHBlciBSZWFsbSB2aWFbW0Nyb3NzT3JpZ2luUHJvcGVydHlEZXNjcmlwdG9yTWFwXV08L3Rp
dGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9icm93c2Vycy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXIt
KC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyI+
PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3Nz
T3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmlnaW5XaW5k
b3dNZXRob2RzKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLCB3W2tleV0sIGB3LiR7
a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgY29uc3QgZGVzYzIgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
ZGVzYzEudmFsdWUsIGRlc2MyLnZhbHVlLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHld
XWApOworICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgYXJlIGNhY2hlZCIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VD
cm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2lu
V2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNjMS5nZXQsIGRlc2MyLmdldCwgYHcuJHtrZXl9IGdldHRlcmApOworICAgICAgICBpZiAoa2V5
ID09PSAibG9jYXRpb24iKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnNldCwg
ZGVzYzIuc2V0LCBgdy4ke2tleX0gc2V0dGVyYCk7CisgICAgICAgIH0KKyAgICB9Cit9LCAiQ3Jv
c3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgYXJlIGNhY2hlZCIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHcubG9jYXRpb24ucmVwbGFjZSwgdy5sb2NhdGlvbi5yZXBs
YWNlLCAidmlhIFtbR2V0XV0iKTsKKyAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsKKyAgICBjb25zdCBkZXNjMiA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwgInZpYSBbW0dldE93
blByb3BlcnR5XV0iKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhv
ZCBpcyBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcg
PSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3QgZGVzYzEgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJocmVmIik7CisgICAgY29u
c3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJo
cmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCk7Cit9LCAiQ3Jv
c3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaXMgY2FjaGVkIik7Cis8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMt
ZnVuY3Rpb24tY29tbW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9uLmpzCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMt
ZnVuY3Rpb24tY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKyJ1c2Ug
c3RyaWN0IjsKKworY29uc3QgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2RzID0gWworICAgIHtrZXk6
ICJjbG9zZSIsIGxlbmd0aDogMH0sCisgICAge2tleTogImZvY3VzIiwgbGVuZ3RoOiAwfSwKKyAg
ICB7a2V5OiAiYmx1ciIsIGxlbmd0aDogMH0sCisgICAge2tleTogInBvc3RNZXNzYWdlIiwgbGVu
Z3RoOiAxfSwKK107CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93QWNjZXNzb3JzID0gWworICAg
ICJ3aW5kb3ciLAorICAgICJzZWxmIiwKKyAgICAibG9jYXRpb24iLAorICAgICJjbG9zZWQiLAor
ICAgICJmcmFtZXMiLAorICAgICJsZW5ndGgiLAorICAgICJ0b3AiLAorICAgICJvcGVuZXIiLAor
ICAgICJwYXJlbnQiLAorXS5tYXAoa2V5ID0+ICh7a2V5fSkpOworCitjb25zdCBtYWtlQ3Jvc3NP
cmlnaW5XaW5kb3cgPSB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKKyAgICBjb25zdCBwYXRoID0gbG9jYXRpb24ucGF0aG5hbWUuc2xp
Y2UoMCwgbG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSkgKyAiL2ZyYW1lLmh0bWwi
OworICAgIGlmcmFtZS5zcmMgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsg
cGF0aDsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7IHJlc29sdmUoaWZyYW1lLmNvbnRlbnRXaW5k
b3cpOyB9OworICAgICAgICBpZnJhbWUub25lcnJvciA9IHJlamVjdDsKKworICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHsg
aWZyYW1lLnJlbW92ZSgpOyB9KTsKKyAgICB9KTsKK307CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAK
KworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgn
CitQQVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbGVuZ3Ro
JworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVj
dCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMg
Y29ycmVjdCAnbGVuZ3RoJworCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
cmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24t
bGVuZ3RoLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0
cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMgYW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3
aXRoIGNvcnJlY3QgJ2xlbmd0aCcgcHJvcGVydHk8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5odG1s
I2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkiPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21t
b24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNyb3NzLW9y
aWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZv
ciAoY29uc3Qge2tleSwgbGVuZ3RofSBvZiBjcm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyh3W2tleV0ubGVuZ3RoLCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEg
W1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3Ro
LCBsZW5ndGgsIGB3LiR7a2V5fSB2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dYCk7CisgICAgfQorfSwg
IkNyb3NzLW9yaWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCciKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NP
cmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRv
d0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0
aCwgMCwgYHcuJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09ICJsb2NhdGlvbiIpIHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCBgdy4ke2tleX1gKTsK
KyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29ycyBoYXZl
IGNvcnJlY3QgJ2xlbmd0aCciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNv
bnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFs
cyh3LmxvY2F0aW9uLnJlcGxhY2UubGVuZ3RoLCAxKTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAgIGFz
c2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgsIDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2lu
ZG93KHQpOworICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHcubG9jYXRpb24sICJocmVmIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5sZW5ndGgs
IDEpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0
ICdsZW5ndGgnIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENyb3NzLW9y
aWdpbiBXaW5kb3cgbWV0aG9kcyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdp
biBXaW5kb3cgYWNjZXNzb3JzIGhhdmUgY29ycmVjdCAnbmFtZScKK1BBU1MgQ3Jvc3Mtb3JpZ2lu
IExvY2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3Nz
LW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICduYW1lJworCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3Rz
L2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0
aW9uLW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3Mtb3JpZ2luIG1ldGhvZHMg
YW5kIGFjY2Vzc29ycyBhcmUgY3JlYXRlZCB3aXRoIGNvcnJlY3QgJ25hbWUnIHByb3BlcnR5PC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVy
LSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9z
c09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2luV2lu
ZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHdba2V5XS5uYW1lLCBrZXksIGB3
LiR7a2V5fSB2aWEgW1tHZXRdXWApOworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mu
dmFsdWUubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAg
IH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICduYW1lJyIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VD
cm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtrZXl9IG9mIGNyb3NzT3JpZ2lu
V2luZG93QWNjZXNzb3JzKSB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQu
bmFtZSwgYGdldCAke2tleX1gKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxvY2F0aW9uIikgewor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5uYW1lLCBgc2V0ICR7a2V5fWApOwor
ICAgICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGhhdmUg
Y29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3
LmxvY2F0aW9uLnJlcGxhY2UubmFtZSwgInJlcGxhY2UiKTsKKyAgICBjb25zdCBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0aW9uLCAicmVwbGFjZSIpOworICAg
IGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCAicmVwbGFjZSIpOworfSwgIkNyb3NzLW9y
aWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1lJyIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09y
aWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQu
bmFtZSwgInNldCBocmVmIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExvY2F0aW9uIGBocmVmYCBzZXR0
ZXIgaGFzIGNvcnJlY3QgJ25hbWUnIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>