<?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>175677</bug_id>
          
          <creation_ts>2017-08-17 10:39:27 -0700</creation_ts>
          <short_desc>[Cache API] Add support for Cache.add/addAll</short_desc>
          <delta_ts>2017-08-21 19:04:02 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339617</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-17 10:39:27 -0700</bug_when>
    <thetext>[Cache API] Add support for Cache.add/addAll</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339623</commentid>
    <comment_count>1</comment_count>
      <attachid>318380</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-17 10:45:57 -0700</bug_when>
    <thetext>Created attachment 318380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339652</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-17 11:23:41 -0700</bug_when>
    <thetext>EndOfLoad callback part of the patch is the same as the one uploaded in bug 175658 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339658</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-17 11:43:36 -0700</bug_when>
    <thetext>Not sure why other EWS bots are not kicking on...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339801</commentid>
    <comment_count>4</comment_count>
      <attachid>318380</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-17 15:44:22 -0700</bug_when>
    <thetext>Comment on attachment 318380
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.h:98
&gt; +    Variant&lt;std::nullptr_t, RefPtr&lt;FormData&gt;, RefPtr&lt;SharedBuffer&gt;&gt; consumeBody();

This is not implemented, and if it were we could use Ref instead of RefPtr.

&gt; Source/WebCore/Modules/fetch/FetchResponse.h:107
&gt; +    static void startFetching(ScriptExecutionContext&amp;, FetchRequest&amp;, std::optional&lt;FetchPromise&gt;&amp;&amp;, std::optional&lt;EndOfLoad&gt;&amp;&amp;);

My comment in https://bugs.webkit.org/show_bug.cgi?id=175658 applies here, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340352</commentid>
    <comment_count>5</comment_count>
      <attachid>318569</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-18 18:35:19 -0700</bug_when>
    <thetext>Created attachment 318569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340385</commentid>
    <comment_count>6</comment_count>
      <attachid>318583</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-18 22:35:04 -0700</bug_when>
    <thetext>Created attachment 318583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340409</commentid>
    <comment_count>7</comment_count>
      <attachid>318583</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-19 12:51:56 -0700</bug_when>
    <thetext>Comment on attachment 318583
Patch

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

&gt; Source/WebCore/Modules/cache/Cache.cpp:124
&gt; +        if (!hasStar &amp;&amp; stripLeadingAndTrailingHTTPSpaces(view.toStringWithoutCopying()) == &quot;*&quot;)

I wonder if, rather than allocating these two strings per loop, we could add a strip function to StringView that would do this without allocation, something like:

template&lt;bool isMatchedCharacter(UChar), typename CharacterType&gt;
inline StringView stripLeadingAndTrailingMatchedCharacters(StringView base, const CharacterType* characters, size_t length)
{
    if (!length)
        return base;

    unsigned start = 0;
    unsigned end = length - 1;
    
    // Skip mached characters from start.
    while (start &lt;= end &amp;&amp; predicate(characters[start]))
        ++start;
    
    // Only the matched characters.
    if (start &gt; end)
        return StringView::empty();

    // Skip mached characters from end.
    while (end &amp;&amp; predicate(characters[end]))
        --end;

    if (!start &amp;&amp; end == length - 1)
        return base;

    StringView result(characters + start, end + 1 - start);
    result.setUnderlyingString(base);
    return result;
}

template&lt;bool isMatchedCharacter(UChar)&gt;
StringView StringView::stripLeadingAndTrailingMatchedCharacters()
{
    if (is8Bit())
        return WTF::stripLeadingAndTrailingMatchedCharacters&lt;isMatchedCharacter, LChar&gt;(*this, characters8(), m_length);
    return WTF::stripLeadingAndTrailingMatchedCharacters&lt;isMatchedCharacter, UChar&gt;(*this, characters16(), m_length);
}


And then a stripLeadingAndTrailingHTTPSpaces overload like:

inline StringView stripLeadingAndTrailingHTTPSpaces(StringView stringView)
{
    return stringView.stripLeadingAndTrailingMatchedCharacters&lt;isHTTPSpace&gt;();
}

(Untest code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340413</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-19 13:10:36 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; Comment on attachment 318583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318583&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:124
&gt; &gt; +        if (!hasStar &amp;&amp; stripLeadingAndTrailingHTTPSpaces(view.toStringWithoutCopying()) == &quot;*&quot;)
&gt; 
&gt; I wonder if, rather than allocating these two strings per loop, we could add
&gt; a strip function to StringView that would do this without allocation,

I also think it seems a good idea.
I got some push back about it in a previous cache api patch and did not try to do it here.

I can move forward on this in a follow-up, touching string headers is quite compile-time consuming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340449</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-19 16:07:43 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; (In reply to Sam Weinig from comment #7)
&gt; &gt; Comment on attachment 318583 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=318583&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:124
&gt; &gt; &gt; +        if (!hasStar &amp;&amp; stripLeadingAndTrailingHTTPSpaces(view.toStringWithoutCopying()) == &quot;*&quot;)
&gt; &gt; 
&gt; &gt; I wonder if, rather than allocating these two strings per loop, we could add
&gt; &gt; a strip function to StringView that would do this without allocation,
&gt; 
&gt; I also think it seems a good idea.
&gt; I got some push back about it in a previous cache api patch and did not try
&gt; to do it here.
&gt; 

Interesting. What was the objection?

&gt; I can move forward on this in a follow-up, touching string headers is quite
&gt; compile-time consuming...

Yeah, no need to do it in this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340498</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-20 17:03:00 -0700</bug_when>
    <thetext>I added new StringView API to make the whitespace stripping cheaper in https://bugs.webkit.org/show_bug.cgi?id=175757.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340760</commentid>
    <comment_count>11</comment_count>
      <attachid>318583</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-21 14:35:11 -0700</bug_when>
    <thetext>Comment on attachment 318583
Patch

r=me
Adopt Sam&apos;s StringView API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340780</commentid>
    <comment_count>12</comment_count>
      <attachid>318583</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 15:12:18 -0700</bug_when>
    <thetext>Comment on attachment 318583
Patch

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

&gt; Source/WebCore/Modules/cache/Cache.cpp:115
&gt; +    infos.append(WTFMove(info));

Vector has a constructor that takes an initializer list and would be me more efficient.

&gt; Source/WebCore/Modules/cache/Cache.cpp:139
&gt; +        if (auto callback = WTFMove(m_callback))

This WTFMove() does not seem useful.

&gt; Source/WebCore/Modules/cache/Cache.cpp:424
&gt; +CacheStorageConnection::Record toConnectionRecord(const FetchRequest&amp; request, FetchResponse&amp; response, CacheStorageConnection::ResponseBody&amp;&amp; responseBody)

Why isn&apos;t this static anymore? Seems wrong.

&gt; Source/WebCore/Modules/cache/Cache.h:62
&gt; +    ExceptionOr&lt;Ref&lt;FetchRequest&gt;&gt; requestFromInfo(RequestInfo&amp;&amp;, bool ignoreMethod);

Can this be static?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340863</commentid>
    <comment_count>13</comment_count>
      <attachid>318706</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-21 17:25:15 -0700</bug_when>
    <thetext>Created attachment 318706
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340867</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-21 17:27:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; Comment on attachment 318583 [details]
&gt; Patch
&gt; 
&gt; r=me
&gt; Adopt Sam&apos;s StringView API.

Sure, will do in a separate patch.

(In reply to Chris Dumez from comment #12)
&gt; Comment on attachment 318583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318583&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:115
&gt; &gt; +    infos.append(WTFMove(info));
&gt; 
&gt; Vector has a constructor that takes an initializer list and would be me more
&gt; efficient.

OK
 
&gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:139
&gt; &gt; +        if (auto callback = WTFMove(m_callback))
&gt; 
&gt; This WTFMove() does not seem useful.

OK

&gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:424
&gt; &gt; +CacheStorageConnection::Record toConnectionRecord(const FetchRequest&amp; request, FetchResponse&amp; response, CacheStorageConnection::ResponseBody&amp;&amp; responseBody)
&gt; 
&gt; Why isn&apos;t this static anymore? Seems wrong.

It still is, there is a declaration.

&gt; &gt; Source/WebCore/Modules/cache/Cache.h:62
&gt; &gt; +    ExceptionOr&lt;Ref&lt;FetchRequest&gt;&gt; requestFromInfo(RequestInfo&amp;&amp;, bool ignoreMethod);
&gt; 
&gt; Can this be static?

It could but would require passing another parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340899</commentid>
    <comment_count>15</comment_count>
      <attachid>318706</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-21 18:16:44 -0700</bug_when>
    <thetext>Comment on attachment 318706
Patch for landing

Rejecting attachment 318706 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 318706, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/imported/w3c/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/4357058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340900</commentid>
    <comment_count>16</comment_count>
      <attachid>318715</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-21 18:22:23 -0700</bug_when>
    <thetext>Created attachment 318715
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340916</commentid>
    <comment_count>17</comment_count>
      <attachid>318715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-21 19:03:27 -0700</bug_when>
    <thetext>Comment on attachment 318715
Patch for landing

Clearing flags on attachment: 318715

Committed r220998: &lt;http://trac.webkit.org/changeset/220998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340917</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-21 19:03:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340918</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-21 19:04:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/34005117&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318380</attachid>
            <date>2017-08-17 10:45:57 -0700</date>
            <delta_ts>2017-08-18 18:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175677-20170817104556.patch</filename>
            <type>text/plain</type>
            <size>23788</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRhOTYxMmEzMzhmNjg5
MWE1ZTE5MWRmZjFmMWIzZTIzNGUyNjM1Ny4uNjI2NDdmNjNiMjBhOWRkMTU3NjliMmZjZGY0OTc3
NWZmYWNiZjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE3LTA4LTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIENhY2hlLmFkZC9hZGRBbGwKKworICAgICAgICBObyBj
aGFuZ2UgaW4gdGVzdCB1bnRpbCBXSzIgYmFja2VuZCBpcyBsaXZlLgorCisgICAgICAgIEFkZGlu
ZyBzdXBwb3J0IGZvciB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIGEgZmV0Y2ggbG9hZCAocmVzcG9u
c2UgYm9keSBpbmNsdWRlZCkgYXMgYSBjYWxsYmFjay4KKyAgICAgICAgQ2FjaGUuYWRkQWxsIGlt
cGxlbWVudGF0aW9uIGlzIHRoZW4gYXMgZm9sbG93OgorICAgICAgICAtIEZldGNoIHRoZSByZXNv
dXJjZXMgaW4gcGFyYWxsZWwuCisgICAgICAgIC0gV2FpdCBmb3IgYWxsIHRoZW0gdG8gY29tcGxl
dGUgdXNpbmcgRmV0Y2hUYXNrQ291bnRlci4KKyAgICAgICAgLSBJZiBhbiBlcnJvciBoYXBwZW5z
IGluIGFueSBsb2FkIG9yIGlmIHRoZSByZXNwb25zZSBpcyBub3QgYXMgZXhwZWN0ZWQgZm9yIENh
Y2hlIEFQSSwgcmVqZWN0IHRoZSBwcm9taXNlLgorICAgICAgICAtIENhbGwgdGhlIGJhdGNoIHB1
dCBvcGVyYXRpb24gd2l0aCBhbGwgcmVjZWl2ZWQgRmV0Y2hSZXNwb25zZSBvYmplY3RzLgorCisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5Q2FjaGVNYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpoYXNSZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hUYXNrQ291bnRlcjo6RmV0Y2hUYXNrQ291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFRhc2tDb3VudGVyOjp+RmV0Y2hUYXNrQ291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFRhc2tDb3VudGVyOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hU
YXNrQ291bnRlcjo6aXNEb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0Nv
dW50ZXI6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdEZyb21JbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjprZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpiYXRjaFB1
dE9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFJlc3BvbnNlOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpmZXRj
aEFuZFdhaXRGb3JCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0
RmV0Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OkJvZHlMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6
Om5vdGlmeUVuZE9mTG9hZCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisKKzIwMTctMDgtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAg
ICAgICAgIEFkZCBhIERPTVByb21pc2VEZWZlcnJlZCBtZXRob2QgdG8gaGFuZGxlIEV4Y2VwdGlv
bk9yPD4gcmVzdWx0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1NjAzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKaW5kZXgg
ZGM1NTEzNzA4N2Y0ZTk2ZjEzMGZkOWMzYTlkNWE0MTkzYjE2Mzg0MS4uZmUzNGI5N2JkODc3MjBl
MGU5MjZkNTI1ZWIzNjc4NGFhOTk4OGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZS5jcHAKQEAgLTEwOSw0NSArMTA5LDE2MyBAQCB2b2lkIENhY2hlOjpkb01hdGNoKHN0ZDo6
b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpbwog
ICAgIH0pOwogfQogCi12b2lkIENhY2hlOjphZGQoUmVxdWVzdEluZm8mJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgQ2FjaGU6OmFkZChSZXF1ZXN0SW5mbyYmIGlu
Zm8sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGlt
cGxlbWVudGVkIil9KTsKKyAgICBWZWN0b3I8UmVxdWVzdEluZm8+IGluZm9zOworICAgIGluZm9z
LmFwcGVuZChXVEZNb3ZlKGluZm8pKTsKKyAgICBhZGRBbGwoV1RGTW92ZShpbmZvcyksIFdURk1v
dmUocHJvbWlzZSkpOwogfQogCi12b2lkIENhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZv
PiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorc3RhdGljIGlubGluZSBi
b29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZl
dGNoUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgY2FjaGVk
UmVzcG9uc2UsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQogewotICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIk5v
dCBpbXBsZW1lbnRlZCIpfSk7CisgICAgLy8gV2UgbmVlZCB0byBwYXNzIHRoZSByZXNvdXJjZSBy
ZXF1ZXN0IHdpdGggYWxsIGNvcnJlY3QgaGVhZGVycyBoZW5jZSB3aHkgd2UgY2FsbCByZXNvdXJj
ZVJlcXVlc3QoKS4KKyAgICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNo
ZU1hdGNoKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hlZFJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIGNhY2hlZFJlc3BvbnNlLCBvcHRpb25zKTsKIH0KIAotdm9pZCBDYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzUmVz
cG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlKQor
eworICAgIGF1dG8gdmFyeVZhbHVlID0gcmVzcG9uc2UuaGVhZGVycygpLmludGVybmFsSGVhZGVy
cygpLmdldChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6VmFyeSk7CisgICAgYm9vbCBoYXNTdGFy
ID0gZmFsc2U7CisgICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3
IHZpZXcpIHsKKyAgICAgICAgaWYgKCFoYXNTdGFyICYmIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRUUFNwYWNlcyh2aWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgPT0gIioiKQorICAgICAg
ICAgICAgaGFzU3RhciA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIGhhc1N0YXI7Cit9CisK
K2NsYXNzIEZldGNoVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaFRhc2tDb3Vu
dGVyPiB7CitwdWJsaWM6CisgICAgRmV0Y2hUYXNrQ291bnRlcihET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBt
X3Byb21pc2UoV1RGTW92ZShwcm9taXNlKSkKKyAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spKQorICAgIHsKKyAgICB9CisKKyAgICB+RmV0Y2hUYXNrQ291bnRlcigpCisgICAg
eworICAgICAgICBpZiAoIWlzRG9uZSgpKQorICAgICAgICAgICAgbV9jYWxsYmFjayhXVEZNb3Zl
KG1fcmVjb3JkcyksIFdURk1vdmUobV9wcm9taXNlKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRS
ZWNvcmQoUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChtX2lzRG9uZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zOworICAgICAgICBmb3IgKGF1
dG8mIHJlY29yZCA6IG1fcmVjb3JkcykgeworICAgICAgICAgICAgaWYgKHF1ZXJ5Q2FjaGVNYXRj
aChyZXF1ZXN0LmdldCgpLCByZWNvcmQucmVxdWVzdC5nZXQoKSwgcmVjb3JkLnJlc3BvbnNlLT5y
ZXNvdXJjZVJlc3BvbnNlKCksIG9wdGlvbnMpKSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoImFkZEFsbCBjYW5ub3Qg
c3RvcmUgc2V2ZXJhbCBtYXRjaGluZyByZXF1ZXN0cyIpfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQo
Q2FjaGVTdG9yYWdlUmVjb3JkIHsgMCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSkgfSk7CisgICAgfQorCisgICAgYm9vbCBpc0RvbmUoKSBjb25zdCB7IHJldHVybiBtX2lzRG9u
ZTsgfQorICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICB7CisgICAg
ICAgIGlmIChtX2lzRG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9pc0RvbmUg
PSB0cnVlOworICAgICAgICBtX3Byb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+IG1fcmVjb3Jk
czsKKyAgICBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4gbV9wcm9taXNlOworICAgIEZ1bmN0aW9u
PHZvaWQoVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpPiBtX2NhbGxiYWNrOworICAgIGJvb2wgbV9pc0RvbmUgeyBmYWxzZSB9OworfTsKKwor
RXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IENhY2hlOjpyZXF1ZXN0RnJvbUluZm8oUmVx
dWVzdEluZm8mJiBpbmZvLCBib29sIGlnbm9yZU1ldGhvZCkKIHsKICAgICBSZWZQdHI8RmV0Y2hS
ZXF1ZXN0PiByZXF1ZXN0OwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+PihpbmZvKSkgewogICAgICAgICByZXF1ZXN0ID0gV1RGOjpnZXQ8UmVmUHRy
PEZldGNoUmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgIGlmIChyZXF1
ZXN0LT5tZXRob2QoKSAhPSAiR0VUIikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3QgbWV0aG9kIGlzIG5vdCBH
RVQiKSB9KTsKKyAgICAgICAgaWYgKHJlcXVlc3QtPm1ldGhvZCgpICE9ICJHRVQiICYmICFpZ25v
cmVNZXRob2QpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJ
SUxpdGVyYWwoIlJlcXVlc3QgbWV0aG9kIGlzIG5vdCBHRVQiKSB9OworICAgIH0gZWxzZQorICAg
ICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlm
ICghcHJvdG9jb2xJc0luSFRUUEZhbWlseShyZXF1ZXN0LT51cmwoKSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCB1cmwgaXMgbm90
IEhUVFAvSFRUUFMiKSB9OworCisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKTsK
K30KKwordm9pZCBDYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxS
ZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7CisgICAgcmVxdWVzdHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShpbmZvcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaW5mbyA6IGluZm9zKSB7Cisg
ICAgICAgIGJvb2wgaWdub3JlTWV0aG9kID0gZmFsc2U7CisgICAgICAgIGF1dG8gcmVxdWVzdE9y
RXhjZXB0aW9uID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mbyksIGlnbm9yZU1ldGhvZCk7
CisgICAgICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9u
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKKyAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJlcXVlc3RPckV4Y2VwdGlvbi5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQogCi0gICAgaWYgKCFwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KHJlcXVlc3QtPnVybCgpKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCB1cmwgaXMgbm90IEhUVFAvSFRU
UFMiKSB9KTsKKyAgICBhdXRvIGZldGNoVGFza0NvdW50ZXIgPSBhZG9wdFJlZigqbmV3IEZldGNo
VGFza0NvdW50ZXIoV1RGTW92ZShwcm9taXNlKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgdGhpc10oVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mJiByZWNvcmRzLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKSBtdXRhYmxlIHsKKyAgICAgICAgYmF0Y2hQdXRP
cGVyYXRpb24oV1RGTW92ZShyZWNvcmRzKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShF
eGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm9taXNl
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICB9KTsKKyAgICB9KSk7CisKKyAgICBm
b3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAgICAgICBhdXRvJiByZXF1ZXN0UmVm
ZXJlbmNlID0gcmVxdWVzdC5nZXQoKTsKKyAgICAgICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2hBbmRX
YWl0Rm9yQm9keSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0UmVmZXJlbmNlLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgdGhpcywgZmV0Y2hUYXNrQ291bnRlciA9IGZldGNoVGFza0NvdW50ZXIuY29weVJlZigpXShF
eGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKworICAg
ICAgICAgICAgaWYgKGZldGNoVGFza0NvdW50ZXItPmlzRG9uZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgICAgIGZldGNoVGFza0NvdW50ZXItPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAg
ICAgICAgICAgIGlmICghcmVzcG9uc2UtPm9rKCkpIHsKKyAgICAgICAgICAgICAgICBmZXRjaFRh
c2tDb3VudGVyLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJl
c3BvbnNlIGlzIG5vdCBPSyIpIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLT5zdGF0dXMoKSA9PSAyMDYpIHsKKyAg
ICAgICAgICAgICAgICBmZXRjaFRhc2tDb3VudGVyLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVy
cm9yLCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNlIGlzIGEgMjA2IHBhcnRpYWwiKSB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChoYXNS
ZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUocmVzcG9uc2UuZ2V0KCkpKSB7CisgICAgICAgICAg
ICAgICAgZmV0Y2hUYXNrQ291bnRlci0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVND
SUlMaXRlcmFsKCJSZXNwb25zZSBoYXMgYSAnKicgVmFyeSBoZWFkZXIgdmFsdWUiKSB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmZXRjaFRh
c2tDb3VudGVyLT5hZGRSZWNvcmQoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSkp
OworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpZ25vcmVNZXRob2QgPSBmYWxz
ZTsKKyAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3Zl
KGluZm8pLCBpZ25vcmVNZXRob2QpOworICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QocmVxdWVzdE9yRXhjZXB0aW9uLnJl
bGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgYXV0byByZXF1
ZXN0ID0gcmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgLy8g
RklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGFu
ZCB0cmltIHdoaXRlc3BhY2VzIGF0IHRoZSBzYW1lIHRpbWUuCi0gICAgYXV0byB2YXJ5VmFsdWUg
PSByZXNwb25zZS0+aGVhZGVycygpLmludGVybmFsSGVhZGVycygpLmdldChXZWJDb3JlOjpIVFRQ
SGVhZGVyTmFtZTo6VmFyeSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdmFyeUhlYWRlck5hbWVzOwot
ICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCB2YXJ5SGVhZGVyTmFtZXMpOwotICAgIGZv
ciAoYXV0byYgbmFtZSA6IHZhcnlIZWFkZXJOYW1lcykgewotICAgICAgICBpZiAoc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG5hbWUpID09ICIqIikgewotICAgICAgICAgICAgcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNl
IGhhcyBhICcqJyBWYXJ5IGhlYWRlciB2YWx1ZSIpIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgaWYgKGhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZShyZXNwb25z
ZS5nZXQoKSkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNlIGhhcyBhICcqJyBWYXJ5IGhlYWRlciB2YWx1ZSIpIH0p
OworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Rpc3R1cmJl
ZCgpKSB7CkBAIC0xNjAsMzkgKzI3OCw0MCBAQCB2b2lkIENhY2hlOjpwdXQoUmVxdWVzdEluZm8m
JiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZURlZgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBiZWlu
ZyBsb2FkZWQgcmVzcG9uc2VzLgotICAgIGlmIChyZXNwb25zZS0+aXNMb2FkaW5nKCkpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiQ2FjaGluZyBhIGxvYWRpbmcgUmVzcG9uc2UgaXMgbm90IHlldCBzdXBwb3J0ZWQi
KSB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgUmVhZGFibGVTdHJlYW0uCiAgICAgaWYgKHJlc3BvbnNlLT5pc1JlYWRhYmxlU3RyZWFt
Qm9keSgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRl
ZEVycm9yLCBBU0NJSUxpdGVyYWwoIkNhY2hpbmcgYSBSZXNwb25zZSB3aXRoIGRhdGEgc3RvcmVk
IGluIGEgUmVhZGFibGVTdHJlYW0gaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGJhdGNoUHV0T3BlcmF0aW9uKCpyZXF1ZXN0LCByZXNwb25z
ZS5nZXQoKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaWYgKHJlc3BvbnNlLT5pc0xvYWRpbmcoKSkgeworICAg
ICAgICByZXNwb25zZS0+bm90aWZ5RW5kT2ZMb2FkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHRoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYmF0Y2hQdXRP
cGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgp
LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3Vs
dCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCks
IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwogICAg
IH0pOwogfQogCiB2b2lkIENhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1
ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHBy
b21pc2UpCiB7Ci0gICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mbykpIHsKLSAgICAg
ICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvKS5yZWxlYXNl
Tm9uTnVsbCgpOwotICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIgJiYgIW9w
dGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2Up
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
KyAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGlu
Zm8pLCBvcHRpb25zLmlnbm9yZU1ldGhvZCk7CisgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2UpOworICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIGF1dG8gcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlvbi5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGJhdGNoRGVsZXRlT3BlcmF0aW9uKCpyZXF1ZXN0
LCBXVEZNb3ZlKG9wdGlvbnMpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPGJvb2w+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBiYXRjaERlbGV0ZU9wZXJhdGlvbihy
ZXF1ZXN0LmdldCgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldKEV4Y2VwdGlvbk9yPGJvb2w+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlz
ZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KQEAgLTIwMSwxNyArMzIwLDEy
IEBAIHZvaWQgQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiB7CiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4g
cmVxdWVzdDsKICAgICBpZiAoaW5mbykgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mby52YWx1ZSgpKSkgewotICAgICAgICAgICAg
cmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvLnZhbHVlKCkpLnJl
bGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdF
VCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4geyB9KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
VU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgcmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby52YWx1ZSgpKSwgeyB9KS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRpb24gPSByZXF1ZXN0RnJv
bUluZm8oV1RGTW92ZShpbmZvLnZhbHVlKCkpLCBvcHRpb25zLmlnbm9yZU1ldGhvZCk7CisgICAg
ICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
IHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVmPEZldGNoUmVxdWVzdD4+IHsgfSk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAoIXJlcXVlc3QpIHsK
QEAgLTI1MywxMiArMzY3LDYgQEAgdm9pZCBDYWNoZTo6cXVlcnlDYWNoZShSZWY8RmV0Y2hSZXF1
ZXN0PiYmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywKICAgICB9KTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBGZXRjaFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IEZldGNoUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgY2FjaGVkUmVzcG9uc2UsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRp
b25zKQotewotICAgIC8vIFdlIG5lZWQgdG8gcGFzcyB0aGUgcmVzb3VyY2UgcmVxdWVzdCB3aXRo
IGFsbCBjb3JyZWN0IGhlYWRlcnMgaGVuY2Ugd2h5IHdlIGNhbGwgcmVzb3VyY2VSZXF1ZXN0KCku
Ci0gICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBj
YWNoZWRSZXNwb25zZSwgb3B0aW9ucyk7Ci19Ci0KIFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+
IENhY2hlOjpxdWVyeUNhY2hlV2l0aFRhcmdldFN0b3JhZ2UoY29uc3QgRmV0Y2hSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVmVjdG9yPENh
Y2hlU3RvcmFnZVJlY29yZD4mIHRhcmdldFN0b3JhZ2UpCiB7CiAgICAgaWYgKCFvcHRpb25zLmln
bm9yZU1ldGhvZCAmJiByZXF1ZXN0Lm1ldGhvZCgpICE9ICJHRVQiKQpAQCAtMzEzLDYgKzQyMSwy
MiBAQCB2b2lkIENhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cXVlc3QsIEZldGNoUmVzcG9uc2UmIHJlc3BvbgogICAgIH0pOwogfQogCit2b2lkIENhY2hlOjpi
YXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYmIGZldGNoUmVjb3Jk
cywgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQor
eworICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHM7Cisg
ICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZldGNoUmVjb3Jkcy5zaXplKCkpOwor
ICAgIGZvciAoYXV0byYgZmV0Y2hSZWNvcmQgOiBmZXRjaFJlY29yZHMpCisgICAgICAgIHJlY29y
ZHMudW5jaGVja2VkQXBwZW5kKHRvQ29ubmVjdGlvblJlY29yZChmZXRjaFJlY29yZC5yZXF1ZXN0
LmdldCgpLCBmZXRjaFJlY29yZC5yZXNwb25zZS5nZXQoKSkpOworCisgICAgc2V0UGVuZGluZ0Fj
dGl2aXR5KHRoaXMpOworICAgIG1fY29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24obV9pZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oVmVjdG9yPHVpbnQ2NF90PiYmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciBl
cnJvcikgeworICAgICAgICBpZiAoIW1faXNTdG9wcGVkKQorICAgICAgICAgICAgY2FsbGJhY2so
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZXJyb3JUb0V4Y2VwdGlvbihlcnJvcikpOworCisgICAg
ICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgIH0pOworfQorCiB2b2lkIENhY2hl
Ojp1cGRhdGVSZWNvcmRzKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYg
cmVjb3JkcykKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaAppbmRleCAwMzQzNmQ5ZDA1ZDc0NmVhNWU0ZTVlZmNk
NGJlOGYxNmJlODNlMjI4Li40MjBhYWRjZWQ0Y2E0NzhhYmJlZmNhN2Q4OTUwODY2NTIxMTViNDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oCkBAIC01OSw2ICs1OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIE1hdGNoVHlwZSB7IEFsbCwgT25seUZpcnN0IH07CiAg
ICAgdm9pZCBkb01hdGNoKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYsIENhY2hlUXVlcnlP
cHRpb25zJiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIE1hdGNoVHlwZSk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IHJlcXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmLCBi
b29sIGlnbm9yZU1ldGhvZCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXJ5Q2Fj
aGUoUmVmPEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQg
YmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPiYmKTsKICAgICB2
b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2Um
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpOworICAgIHZvaWQg
YmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mJiwgV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKIAogICAgIHZvaWQgdXBkYXRlUmVj
b3JkcyhWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMjI1MzJj
NDQwNTA4NTcxNDFhODlmMTkzMDcyZWUwN2ZmM2RlYWE0Zi4uYzA1ZDVlZmY1YjhjYjNjOGQ2ZTNh
NWI5MjllYjk2ODgwY2RmZWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0xMDUsMTMgKzEwNSwzMCBAQCBSZWY8RmV0Y2hSZXNwb25z
ZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUygpCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0
Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0
LCBGZXRjaFByb21pc2UmJiBwcm9taXNlKQogeworICAgIHN0YXJ0RmV0Y2hpbmcoY29udGV4dCwg
cmVxdWVzdCwgV1RGTW92ZShwcm9taXNlKSwgc3RkOjpudWxsb3B0KTsKK30KKwordm9pZCBGZXRj
aFJlc3BvbnNlOjpmZXRjaEFuZFdhaXRGb3JCb2R5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRW5kT2ZMb2FkJiYgZW5kT2ZMb2FkQ2FsbGJh
Y2spCit7CisgICAgc3RhcnRGZXRjaGluZyhjb250ZXh0LCByZXF1ZXN0LCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUoZW5kT2ZMb2FkQ2FsbGJhY2spKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpz
dGFydEZldGNoaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVz
dCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxGZXRjaFByb21pc2U+JiYgcHJvbWlzZSwgc3RkOjpv
cHRpb25hbDxFbmRPZkxvYWQ+JiYgZW5kT2ZMb2FkQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKHBy
b21pc2UgfHwgZW5kT2ZMb2FkQ2FsbGJhY2spOworCiAgICAgaWYgKHJlcXVlc3QuaXNCb2R5UmVh
ZGFibGVTdHJlYW0oKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IsICJSZWFk
YWJsZVN0cmVhbSB1cGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICBpZiAocHJv
bWlzZSkKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIlJlYWRhYmxlU3RyZWFtIHVwbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIiB9KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5kT2ZMb2FkQ2FsbGJhY2sudmFsdWUoKShFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlJlYWRhYmxlU3RyZWFtIHVwbG9hZGluZyBpcyBu
b3Qgc3VwcG9ydGVkIiB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHJlc3Bv
bnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIEZldGNoQm9keTo6bG9h
ZGluZ0JvZHkoKSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1t
dXRhYmxlKSwgeyB9KSk7CiAKICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyLmVtcGxhY2UocmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGlmIChlbmRPZkxvYWRDYWxsYmFj
aykKKyAgICAgICAgcmVzcG9uc2UtPm5vdGlmeUVuZE9mTG9hZChXVEZNb3ZlKGVuZE9mTG9hZENh
bGxiYWNrLnZhbHVlKCkpKTsKICAgICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0
KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3Rk
OjpudWxsb3B0OwogfQpAQCAtMTMzLDYgKzE1MCwxMSBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogICAgICAgICBtX3Jlc3BvbnNlLmNsb3NlU3RyZWFtKCk7
CiAjZW5kaWYKIAorICAgIGlmIChtX3Jlc3BvbnNlLm1fZW5kT2ZMb2FkQ2FsbGJhY2spIHsKKyAg
ICAgICAgbV9yZXNwb25zZS5tX2VuZE9mTG9hZENhbGxiYWNrLnZhbHVlKCkoUmVmPEZldGNoUmVz
cG9uc2U+KG1fcmVzcG9uc2UpKTsKKyAgICAgICAgbV9yZXNwb25zZS5tX2VuZE9mTG9hZENhbGxi
YWNrID0gc3RkOjpudWxsb3B0OworICAgIH0KKwogICAgIGlmIChtX2xvYWRlci0+aXNTdGFydGVk
KCkpIHsKICAgICAgICAgUmVmPEZldGNoUmVzcG9uc2U+IHByb3RlY3RvcihtX3Jlc3BvbnNlKTsK
ICAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBzdGQ6Om51bGxvcHQ7CkBAIC0xNTMs
NiArMTc1LDExIEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChtX3Jlc3Bv
bnNlLm1fZW5kT2ZMb2FkQ2FsbGJhY2spIHsKKyAgICAgICAgbV9yZXNwb25zZS5tX2VuZE9mTG9h
ZENhbGxiYWNrLnZhbHVlKCkoRXhjZXB0aW9uIHsgVHlwZUVycm9yIH0pOworICAgICAgICBtX3Jl
c3BvbnNlLm1fZW5kT2ZMb2FkQ2FsbGJhY2sgPSBzdGQ6Om51bGxvcHQ7CisgICAgfQorCiAgICAg
Ly8gQ2hlY2sgd2hldGhlciBkaWRGYWlsIGlzIGNhbGxlZCBhcyBwYXJ0IG9mIEZldGNoTG9hZGVy
OjpzdGFydC4KICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKSB7CiAgICAgICAgIFJlZjxG
ZXRjaFJlc3BvbnNlPiBwcm90ZWN0b3IobV9yZXNwb25zZSk7CkBAIC0xNjAsNyArMTg3LDcgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Qm9keUxv
YWRlcihGZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hQcm9taXNlJiYgcHJvbWlzZSkKK0Zl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OkJvZHlMb2FkZXIoRmV0Y2hSZXNwb25zZSYgcmVzcG9u
c2UsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hQcm9taXNlPiYmIHByb21pc2UpCiAgICAgOiBtX3Jlc3Bv
bnNlKHJlc3BvbnNlKQogICAgICwgbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiB7CkBAIC0x
NzQsNyArMjAxLDcgQEAgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6fkJvZHlMb2FkZXIoKQog
CiB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIEFTU0VSVChtX3By
b21pc2UpOworICAgIEFTU0VSVChtX3Byb21pc2UgfHwgbV9yZXNwb25zZS5tX2VuZE9mTG9hZENh
bGxiYWNrKTsKIAogICAgIG1fcmVzcG9uc2UubV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpmaWx0ZXIocmVzb3VyY2VSZXNwb25zZSk7CiAgICAgbV9yZXNwb25zZS5tX3Nob3VsZEV4
cG9zZUJvZHkgPSByZXNvdXJjZVJlc3BvbnNlLnRhaW50aW5nKCkgIT0gUmVzb3VyY2VSZXNwb25z
ZTo6VGFpbnRpbmc6Ok9wYXF1ZTsKQEAgLTE4Miw3ICsyMDksOCBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNvdQogICAgIG1fcmVzcG9uc2UubV9oZWFkZXJzLT5maWx0ZXJBbmRGaWxsKG1fcmVzcG9u
c2UubV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJl
c3BvbnNlKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUNvbnRlbnRUeXBlKCk7CiAKLSAgICBzdGQ6
OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsK
KyAgICBpZiAobV9wcm9taXNlKQorICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3Rk
OjpudWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKQEAgLTM1Niw2ICszODQsMTQgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpjYW5jZWwoKQogCiAj
ZW5kaWYKIAordm9pZCBGZXRjaFJlc3BvbnNlOjpub3RpZnlFbmRPZkxvYWQoRW5kT2ZMb2FkJiYg
Y2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFtX2lzRGlzdHVyYmVkKTsKKyAgICBBU1NFUlQoIW1f
ZW5kT2ZMb2FkQ2FsbGJhY2spOworCisgICAgbV9lbmRPZkxvYWRDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOworfQorCiB2b2lkIEZldGNoUmVzcG9uc2U6OnN0b3AoKQogewogICAgIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBkMzkxMDQxOTUyZDYwNGMwZjVmNDQz
YTIwNjdiNmUyOWYzNDk3OTRmLi5hN2YwMzkzM2Q3YmMzNWI1Y2NjYWE3MjA2M2JkMjJiMGUyYTJj
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtNjAsNyArNjAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250
ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpLCBXVEZNb3ZlKHJlc3BvbnNlKSkp
OyB9CiAKICAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPEZldGNoUmVzcG9uc2U+PjsKKyAgICB1c2luZyBFbmRPZkxvYWQgPSBGdW5jdGlvbjx2
b2lkKEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4mJik+OwogICAgIHN0YXRpYyB2b2lk
IGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBGZXRjaFByb21p
c2UmJik7CisgICAgc3RhdGljIHZvaWQgZmV0Y2hBbmRXYWl0Rm9yQm9keShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRW5kT2ZMb2FkJiYpOwogCiAgICAgdm9pZCBjb25z
dW1lKHVuc2lnbmVkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCkBAIC05MywxMiArOTUsMTYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdCB7IHJldHVybiAhIW1fYm9keUxvYWRlcjsgfQogCisgICAgVmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmUHRyPEZvcm1EYXRhPiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNvbnN1bWVC
b2R5KCk7CisKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCisgICAgdm9pZCBub3RpZnlFbmRPZkxvYWQo
RW5kT2ZMb2FkJiYpOworCiBwcml2YXRlOgogICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJz
PiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogCi0gICAgc3RhdGljIHZvaWQgc3RhcnRGZXRjaGlu
ZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9t
aXNlJiYpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0RmV0Y2hpbmcoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIEZldGNoUmVxdWVzdCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hQcm9taXNlPiYmLCBzdGQ6
Om9wdGlvbmFsPEVuZE9mTG9hZD4mJik7CiAKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC0xMTAsNyAr
MTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEJvZHlMb2FkZXIgZmluYWwgOiBwdWJsaWMg
RmV0Y2hMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQm9keUxvYWRlcihGZXRj
aFJlc3BvbnNlJiwgRmV0Y2hQcm9taXNlJiYpOworICAgICAgICBCb2R5TG9hZGVyKEZldGNoUmVz
cG9uc2UmLCBzdGQ6Om9wdGlvbmFsPEZldGNoUHJvbWlzZT4mJik7CiAgICAgICAgIH5Cb2R5TG9h
ZGVyKCk7CiAKICAgICAgICAgYm9vbCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgRmV0Y2hSZXF1ZXN0Jik7CkBAIC0xMzgsNiArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2hvdWxkRXhwb3NlQm9keSB7IHRydWUgfTsKIAogICAgIEZldGNoQm9keUNvbnN1bWVyIG1f
Y29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgIH07CisgICAg
c3RkOjpvcHRpb25hbDxFbmRPZkxvYWQ+IG1fZW5kT2ZMb2FkQ2FsbGJhY2s7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318569</attachid>
            <date>2017-08-18 18:35:19 -0700</date>
            <delta_ts>2017-08-18 22:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175677-20170818183518.patch</filename>
            <type>text/plain</type>
            <size>31714</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQxNDBkYWJhYjNmZmY2
YTAyYzhlNWMxY2IyNzZkZGY0NmYwZGNlZC4uMzlhMTI0Njk5Yzc0YmQwOWJiMmU5YTI0NWM3NjI1
OGQ0NjAzNjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE3LTA4LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAg
IENhY2hlLmFkZEFsbCBpbXBsZW1lbnRhdGlvbiBpcyB0aGVuIGFzIGZvbGxvdzoKKyAgICAgICAg
LSBGZXRjaCB0aGUgcmVzb3VyY2VzIGluIHBhcmFsbGVsLgorICAgICAgICAtIFdhaXQgZm9yIGFs
bCB0aGVtIHRvIGNvbXBsZXRlIHVzaW5nIEZldGNoVGFza0NvdW50ZXIuCisgICAgICAgIC0gSWYg
YW4gZXJyb3IgaGFwcGVucyBpbiBhbnkgbG9hZCBvciBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IGFz
IGV4cGVjdGVkIGZvciBDYWNoZSBBUEksIHJlamVjdCB0aGUgcHJvbWlzZS4KKyAgICAgICAgLSBD
YWxsIHRoZSBiYXRjaCBwdXQgb3BlcmF0aW9uIHdpdGggYWxsIHJlY2VpdmVkIEZldGNoUmVzcG9u
c2Ugb2JqZWN0cy4KKworICAgICAgICBGZXRjaFRhc2tDb3VudGVyIGlzIHJlc3BvbnNpYmxlIHRv
IHdhaXQgZm9yIGVhY2ggcmVzcG9uc2UgdG8gYXJyaXZlLgorICAgICAgICBJdCB0aGVuIGNoZWNr
cyB3aGV0aGVyIHRoZSByZXNwb25zZSBpcyBmaW5lLAorICAgICAgICBJZiBub3QsIHRoZSBhZGRB
bGwgcHJvbWlzZSBpcyByZWplY3RlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCB3YWl0cyBmb3Ig
dGhlIGJvZHkgdG8gYmUgcmVjZWl2ZWQuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYSBoZWxwZXIg
cm91dGluZSB0byBjcmVhdGUgYSBGZXRjaFJlcXVlc3QgZnJvbSBhIGdpdmVuIFJlcXVlc3RJbmZv
LgorICAgICAgICBJbnRyb2R1Y2luZyBhIGhlbHBlciByb3V0aW5lIHRvIGNoZWNrIGZvciBWYXJ5
IEhlYWRlciAnKicgdmFsdWUgaW4gcmVzcG9uc2UgaGVhZGVycy4KKworICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRvTWF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpxdWVyeUNh
Y2hlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6fkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OmlzRG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFRhc2tDb3VudGVyOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6OnJlcXVlc3RGcm9tSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkQWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6a2V5cyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0Nvbm5lY3Rpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmJh
dGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlLmg6CisKKzIw
MTctMDgtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFtD
YWNoZSBBUEldIEFkZCBzdXBwb3J0IGZvciBiZWluZyBsb2FkZWQgcmVzcG9uc2VzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAppbmRleCBlMGFhMjFkYTFjNWFkNGM0Y2Y2YzUw
ZjAxOTAwY2NlNDdmYjFhZmM0Li45ZWI1NDc4YTI4OWU2YjFlY2JjYjI4OTk4OGZlODc4YjZiMjI2
OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcApAQCAtMzYsNiArMzYs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNo
UmVzcG9uc2UmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmJik7CisKIENh
Y2hlOjpDYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiBuYW1l
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9uYW1lKFdU
Rk1vdmUobmFtZSkpCkBAIC02MSwyMyArNjMsMjEgQEAgdm9pZCBDYWNoZTo6bWF0Y2hBbGwoc3Rk
OjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGkK
IAogdm9pZCBDYWNoZTo6ZG9NYXRjaChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYmIGluZm8s
IENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBNYXRjaFR5cGUgbWF0Y2hUeXBlKQogeworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUmVmUHRyPEZldGNoUmVx
dWVzdD4gcmVxdWVzdDsKICAgICBpZiAoaW5mbykgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mby52YWx1ZSgpKSkgewotICAgICAg
ICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvLnZhbHVl
KCkpLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkg
IT0gIkdFVCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KG1hdGNoVHlwZSA9PSBNYXRjaFR5cGU6Ok9ubHlGaXJzdCkgewotICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExTZXF1ZW5j
ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+PihWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+
PiB7IH0pOworICAgICAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJlcXVlc3RGcm9tSW5m
byhXVEZNb3ZlKGluZm8udmFsdWUoKSksIG9wdGlvbnMuaWdub3JlTWV0aG9kKTsKKyAgICAgICAg
aWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgaWYg
KG1hdGNoVHlwZSA9PSBNYXRjaFR5cGU6Ok9ubHlGaXJzdCkgeworICAgICAgICAgICAgICAgIHBy
b21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcmVx
dWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdU
Rk1vdmUoaW5mby52YWx1ZSgpKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9u
c2U+Pj4oVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4geyB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdCkgewpAQCAtMTA5LDQ1
ICsxMDksMTcxIEBAIHZvaWQgQ2FjaGU6OmRvTWF0Y2goc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5m
bz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQg
Q2FjaGU6OmFkZChSZXF1ZXN0SW5mbyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQordm9pZCBDYWNoZTo6YWRkKFJlcXVlc3RJbmZvJiYgaW5mbywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQiKX0pOworICAg
IFZlY3RvcjxSZXF1ZXN0SW5mbz4gaW5mb3M7CisgICAgaW5mb3MuYXBwZW5kKFdURk1vdmUoaW5m
bykpOworICAgIGFkZEFsbChXVEZNb3ZlKGluZm9zKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAK
LXZvaWQgQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzUmVzcG9uc2VWYXJ5
U3RhckhlYWRlclZhbHVlKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwo
Ik5vdCBpbXBsZW1lbnRlZCIpfSk7CisgICAgYXV0byB2YXJ5VmFsdWUgPSByZXNwb25zZS5oZWFk
ZXJzKCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpWYXJ5
KTsKKyAgICBib29sIGhhc1N0YXIgPSBmYWxzZTsKKyAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBm
YWxzZSwgWyZdKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICBpZiAoIWhhc1N0YXIgJiYgc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSA9PSAiKiIpCisgICAgICAgICAgICBoYXNTdGFyID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gaGFzU3RhcjsKIH0KIAotdm9pZCBDYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCitjbGFzcyBGZXRjaFRhc2tDb3VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0
Y2hUYXNrQ291bnRlcj4geworcHVibGljOgorICAgIEZldGNoVGFza0NvdW50ZXIoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik+JiYg
Y2FsbGJhY2spCisgICAgICAgIDogbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCisgICAgICAg
ICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgfkZl
dGNoVGFza0NvdW50ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0RvbmUoKSkKKyAgICAgICAg
ICAgIG1fY2FsbGJhY2soV1RGTW92ZShtX3JlY29yZHMpLCBXVEZNb3ZlKG1fcHJvbWlzZSkpOwor
ICAgIH0KKworICAgIHZvaWQgYWRkUmVjb3JkKFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhKQorICAgIHsKKyAgICAgICAgaWYgKG1faXNEb25lKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIENhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7CisgICAgICAgIGZvciAo
YXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7CisgICAgICAgICAgICBpZiAoQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLCBy
ZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkgeworICAgICAgICAgICAg
ICAgIHJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJh
ZGRBbGwgY2Fubm90IHN0b3JlIHNldmVyYWwgbWF0Y2hpbmcgcmVxdWVzdHMiKX0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkgcmVzcG9uc2VCb2R5OworICAgICAgICBp
ZiAocmVzcG9uc2VEYXRhKQorICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gcmVzcG9uc2VEYXRh
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQodG9Db25uZWN0aW9u
UmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQm9k
eSkpKTsKKyAgICB9CisKKyAgICBib29sIGlzRG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEb25l
OyB9CisgICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQorICAgIHsKKyAgICAg
ICAgaWYgKG1faXNEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2lzRG9uZSA9
IHRydWU7CisgICAgICAgIG1fcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZD4gbV9yZWNvcmRzOworICAgIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiBtX3Byb21pc2U7Cisg
ICAgRnVuY3Rpb248dm9pZChWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYm
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik+IG1fY2FsbGJhY2s7CisgICAgYm9vbCBtX2lz
RG9uZSB7IGZhbHNlIH07Cit9OworCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gQ2Fj
aGU6OnJlcXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmIGluZm8sIGJvb2wgaWdub3JlTWV0aG9k
KQogewogICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8pKSB7CiAgICAgICAgIHJl
cXVlc3QgPSBXVEY6OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mbykucmVsZWFzZU5vbk51
bGwoKTsKLSAgICAgICAgaWYgKHJlcXVlc3QtPm1ldGhvZCgpICE9ICJHRVQiKSB7Ci0gICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
UmVxdWVzdCBtZXRob2QgaXMgbm90IEdFVCIpIH0pOworICAgICAgICBpZiAocmVxdWVzdC0+bWV0
aG9kKCkgIT0gIkdFVCIgJiYgIWlnbm9yZU1ldGhvZCkKKyAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCBtZXRob2QgaXMgbm90IEdF
VCIpIH07CisgICAgfSBlbHNlCisgICAgICAgIHJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8pLCB7IH0pLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOworCisgICAgaWYgKCFwcm90b2NvbElzSW5IVFRQRmFtaWx5KHJlcXVlc3Qt
PnVybCgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJSZXF1ZXN0IHVybCBpcyBub3QgSFRUUC9IVFRQUyIpIH07CisKKyAgICByZXR1cm4gcmVx
dWVzdC5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIENhY2hlOjphZGRBbGwoVmVjdG9yPFJl
cXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
eworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsKKyAgICBy
ZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluZm9zLnNpemUoKSk7CisgICAgZm9yIChh
dXRvJiBpbmZvIDogaW5mb3MpIHsKKyAgICAgICAgYm9vbCBpZ25vcmVNZXRob2QgPSBmYWxzZTsK
KyAgICAgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRpb24gPSByZXF1ZXN0RnJvbUluZm8oV1RGTW92
ZShpbmZvKSwgaWdub3JlTWV0aG9kKTsKKyAgICAgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVxdWVzdE9yRXhj
ZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlcXVlc3QgPSBGZXRjaFJl
cXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8pLCB7
IH0pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICByZXF1ZXN0cy51bmNoZWNrZWRBcHBl
bmQocmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICB9CiAKLSAg
ICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkocmVxdWVzdC0+dXJsKCkpKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXF1
ZXN0IHVybCBpcyBub3QgSFRUUC9IVFRQUyIpIH0pOworICAgIGF1dG8gZmV0Y2hUYXNrQ291bnRl
ciA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hUYXNrQ291bnRlcihXVEZNb3ZlKHByb21pc2UpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzXShWZWN0b3I8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpIG11dGFibGUgeworICAgICAgICBiYXRjaFB1dE9wZXJhdGlvbihXVEZNb3ZlKHJlY29y
ZHMpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CisgICAgICAgIH0pOworICAgIH0pKTsKKworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJl
cXVlc3RzKSB7CisgICAgICAgIGF1dG8mIHJlcXVlc3RSZWZlcmVuY2UgPSByZXF1ZXN0LmdldCgp
OworICAgICAgICBGZXRjaFJlc3BvbnNlOjpmZXRjaCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCByZXF1ZXN0UmVmZXJlbmNlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlz
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgZmV0Y2hUYXNrQ291bnRlciA9IGZldGNoVGFz
a0NvdW50ZXIuY29weVJlZigpXShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJiByZXN1bHQp
IG11dGFibGUgeworCisgICAgICAgICAgICBpZiAoZmV0Y2hUYXNrQ291bnRlci0+aXNEb25lKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgZmV0Y2hUYXNrQ291bnRlci0+cmVqZWN0KHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUmVmPEZldGNoUmVzcG9uc2U+IHJlc3BvbnNlID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLT5v
aygpKSB7CisgICAgICAgICAgICAgICAgZmV0Y2hUYXNrQ291bnRlci0+cmVqZWN0KEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBpcyBub3QgT0siKSB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICho
YXNSZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUocmVzcG9uc2UuZ2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgZmV0Y2hUYXNrQ291bnRlci0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJSZXNwb25zZSBoYXMgYSAnKicgVmFyeSBoZWFkZXIgdmFsdWUiKSB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChyZXNwb25zZS0+c3RhdHVzKCkgPT0gMjA2KSB7CisgICAgICAgICAgICAgICAgZmV0Y2hUYXNr
Q291bnRlci0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNw
b25zZSBpcyBhIDIwNiBwYXJ0aWFsIikgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlXaGVuTG9hZGVk
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVl
c3QpLCB0aGlzLCBmZXRjaFRhc2tDb3VudGVyID0gV1RGTW92ZShmZXRjaFRhc2tDb3VudGVyKSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoZmV0Y2hUYXNr
Q291bnRlci0+aXNEb25lKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZmV0Y2hUYXNrQ291bnRlci0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgZmV0Y2hUYXNrQ291bnRlci0+YWRkUmVjb3JkKFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBDYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGlnbm9yZU1ldGhvZCA9
IGZhbHNlOworICAgIGF1dG8gcmVxdWVzdE9yRXhjZXB0aW9uID0gcmVxdWVzdEZyb21JbmZvKFdU
Rk1vdmUoaW5mbyksIGlnbm9yZU1ldGhvZCk7CisgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChyZXF1ZXN0T3JFeGNlcHRp
b24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBhdXRv
IHJlcXVlc3QgPSByZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAg
ICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3Bs
aXQgYW5kIHRyaW0gd2hpdGVzcGFjZXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBhdXRvIHZhcnlW
YWx1ZSA9IHJlc3BvbnNlLT5oZWFkZXJzKCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6
OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsKLSAgICBWZWN0b3I8U3RyaW5nPiB2YXJ5SGVhZGVyTmFt
ZXM7Ci0gICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgZmFsc2UsIHZhcnlIZWFkZXJOYW1lcyk7Ci0g
ICAgZm9yIChhdXRvJiBuYW1lIDogdmFyeUhlYWRlck5hbWVzKSB7Ci0gICAgICAgIGlmIChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMobmFtZSkgPT0gIioiKSB7Ci0gICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVz
cG9uc2UgaGFzIGEgJyonIFZhcnkgaGVhZGVyIHZhbHVlIikgfSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICBpZiAoaGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKHJl
c3BvbnNlLmdldCgpKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVzcG9uc2UgaGFzIGEgJyonIFZhcnkgaGVhZGVyIHZhbHVl
IikgfSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmVzcG9uc2UtPnN0YXR1
cygpID09IDIwNikgewpAQCAtMTY4LDcgKzI5NCw3IEBAIHZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0
SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVm
CiAKICAgICBpZiAocmVzcG9uc2UtPmlzTG9hZGluZygpKSB7CiAgICAgICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5V2hlbkxvYWRlZChb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSByZXF1ZXN0LnJlbGVhc2VOb25O
dWxsKCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNl
LT5jb25zdW1lQm9keVdoZW5Mb2FkZWQoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgdGhp
c10oRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBl
bHNlIHsKQEAgLTE4NCw0NiArMzEwLDQwIEBAIHZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVmCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBiYXRjaFB1dE9wZXJhdGlvbigqcmVxdWVzdCwgcmVz
cG9uc2UuZ2V0KCksIHJlc3BvbnNlLT5jb25zdW1lQm9keSgpLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBiYXRj
aFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgcmVzcG9uc2UtPmNv
bnN1bWVCb2R5KCksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9p
ZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJl
c3VsdCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBp
bmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDxJRExC
b29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsK
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5m
bykpIHsKLSAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+Pihp
bmZvKS5yZWxlYXNlTm9uTnVsbCgpOwotICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0g
IkdFVCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVxdWVzdE9yRXhjZXB0aW9uID0gcmVxdWVz
dEZyb21JbmZvKFdURk1vdmUoaW5mbyksIG9wdGlvbnMuaWdub3JlTWV0aG9kKTsKKyAgICBpZiAo
cmVxdWVzdE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZShmYWxzZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBiYXRjaERlbGV0ZU9w
ZXJhdGlvbigqcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjxib29sPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYmF0Y2hE
ZWxldGVPcGVyYXRpb24ocmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9y
PGJvb2w+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92
ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFs
PFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgS2V5c1By
b21pc2UmJiBwcm9taXNlKQogeworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVx
dWVzdDsKICAgICBpZiAoaW5mbykgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mby52YWx1ZSgpKSkgewotICAgICAgICAgICAgcmVx
dWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvLnZhbHVlKCkpLnJlbGVh
c2VOb25OdWxsKCk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIg
JiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4geyB9KTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgcmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby52YWx1ZSgpKSwgeyB9KS5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRpb24gPSByZXF1ZXN0RnJvbUlu
Zm8oV1RGTW92ZShpbmZvLnZhbHVlKCkpLCBvcHRpb25zLmlnbm9yZU1ldGhvZCk7CisgICAgICAg
IGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHBy
b21pc2UucmVzb2x2ZShWZWN0b3I8UmVmPEZldGNoUmVxdWVzdD4+IHsgfSk7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlv
bi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAoIXJlcXVlc3QpIHsKQEAg
LTI5NSw3ICs0MTUsNyBAQCB2b2lkIENhY2hlOjpiYXRjaERlbGV0ZU9wZXJhdGlvbihjb25zdCBG
ZXRjaFJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJgogICAgIH0pOwogfQogCi1z
dGF0aWMgaW5saW5lIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rpb25S
ZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNwb25z
ZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5KQor
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBG
ZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlLCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmJiByZXNwb25zZUJvZHkpCiB7CiAgICAgLy8gRklY
TUU6IEFkZCBhIHNldEhUVFBIZWFkZXJGaWVsZHMgb24gUmVzb3VyY2VSZXNwb25zZUJhc2UuCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBjYWNoZWRSZXNwb25zZSA9IHJlc3BvbnNlLnJlc291cmNlUmVz
cG9uc2UoKTsKQEAgLTMxNiw2ICs0MzYsMTEgQEAgdm9pZCBDYWNoZTo6YmF0Y2hQdXRPcGVyYXRp
b24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNwb24KICAg
ICBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiByZWNvcmRzOwogICAgIHJl
Y29yZHMuYXBwZW5kKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LCByZXNwb25zZSwgV1RGTW92
ZShyZXNwb25zZUJvZHkpKSk7CiAKKyAgICBiYXRjaFB1dE9wZXJhdGlvbihXVEZNb3ZlKHJlY29y
ZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQ2FjaGU6OmJhdGNoUHV0T3BlcmF0
aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgV1RG
OjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQorewogICAg
IHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoUHV0T3Bl
cmF0aW9uKG1faWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKFZlY3Rvcjx1aW50NjRfdD4mJiwgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGUuaAppbmRleCBjOTk4ZTA3MWNlYzZlNDhhZTYzY2I3ODZmNmY1
MTg4N2E4ODNlMWM3Li4yMTMwMzc0ZGQ0MTFhMzEyNjQ3NTVjNmMwNjIyMzA3ZGY4NmU3MzcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oCkBAIC01OSw2ICs1OSw3IEBAIHByaXZh
dGU6CiAKICAgICBlbnVtIGNsYXNzIE1hdGNoVHlwZSB7IEFsbCwgT25seUZpcnN0IH07CiAgICAg
dm9pZCBkb01hdGNoKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYsIENhY2hlUXVlcnlPcHRp
b25zJiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIE1hdGNoVHlwZSk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPEZldGNoUmVxdWVzdD4+IHJlcXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmLCBib29s
IGlnbm9yZU1ldGhvZCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXJ5Q2FjaGUo
UmVmPEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMm
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPiYmKTsKICAgICB2b2lk
IGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2UmLCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKKyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZl
Y3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYsIFdURjo6RnVuY3Rpb248dm9p
ZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAKICAgICB2b2lkIHVwZGF0ZVJlY29yZHMoVmVj
dG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mJik7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IDhkNWVjYjdlYzdlN2Q0ZDE0YzRmMjQ0Nzk1ZjU4MTU0M2NhMGUx
NjYuLjQ4ODFjNjBkMWI4NDYzMjA2MGE0ZjcwYzgzODg5YmFhOGE2YWQ5MDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTE4ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQgc3Vw
cG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2Nh
Y2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRv
dy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLWFkZC5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVk
LnR4dDoKKworMjAxNy0wOC0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
ICAgICAgICAgW0NhY2hlIEFQSV0gQWRkIHN1cHBvcnQgZm9yIGJlaW5nIGxvYWRlZCByZXNwb25z
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTcz
MgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1hZGQuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtYWRkLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCAzMThmYzMyMmE2ZjMwMGI4ZDYxYjQ4OTdjZDQyMjY4ZWE4MzJiNTNm
Li5jZjc0Y2ZhZDZkZGYyZWU0ZDEyZjdmNmE1Nzc0NWVmZTYzOWI5OTQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTEsMjAgKzEsMjAgQEAKIAogUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRz
IAotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggcmVsYXRpdmUgVVJMIHNwZWNpZmllZCBhcyBh
IHN0cmluZyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQg
Y2FsbGVkIHdpdGggbm9uLUhUVFAvSFRUUFMgVVJMIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yIG5vbi1IVFRQL0hUVFBTIFVSTHMuIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0
ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFJl
cXVlc3Qgb2JqZWN0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hl
LmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJlcXVlc3QgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3Igbm9uLUdFVCByZXF1ZXN0cy4gZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBO
b3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5
cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHR3aWNlIHdpdGgg
dGhlIHNhbWUgUmVxdWVzdCBvYmplY3QgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIK
LUZBSUwgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1bWVk
KSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgd2l0aCAy
MDYgcmVzcG9uc2UgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3Qgb24gcGFy
dGlhbCByZXNwb25zZSBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRF
cnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENh
Y2hlLmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwg
c2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvciBpZiBhbnkgcmVxdWVzdCBmYWlscyBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJy
b3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVj
dCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZCB3aXRoIHJlcXVlc3Qg
dGhhdCByZXN1bHRzIGluIGEgc3RhdHVzIG9mIDQwNCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQg
c2hvdWxkIHJlamVjdCBpZiByZXNwb25zZSBpcyAhb2sgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
dGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50
ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJU
eXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBh
IHN0YXR1cyBvZiA1MDAgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYg
cmVzcG9uc2UgaXMgIW9rIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcg
b2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRl
ZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK1BBU1Mg
Q2FjaGUuYWRkIGNhbGxlZCB3aXRoIHJlbGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcg
CitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBub24tSFRUUC9IVFRQUyBVUkwgCitQQVNTIENh
Y2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1ZXN0IG9iamVjdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxl
ZCB3aXRoIFBPU1QgcmVxdWVzdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRo
ZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHdpdGgg
bnVsbCBib2R5IChub3QgY29uc3VtZWQpIAorUEFTUyBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9u
c2UgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSAKK1BBU1MgQ2FjaGUuYWRk
IHdpdGggcmVxdWVzdCB0aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNDA0IAorUEFTUyBDYWNo
ZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgCiBQQVNT
IENhY2hlLmFkZEFsbCB3aXRoIG5vIGFyZ3VtZW50cyAKIFBBU1MgQ2FjaGUuYWRkQWxsIHdpdGgg
YSBtaXggb2YgdmFsaWQgYW5kIHVuZGVmaW5lZCBhcmd1bWVudHMgCi1GQUlMIENhY2hlLmFkZEFs
bCB3aXRoIGFuIGVtcHR5IGFycmF5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1G
QUlMIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIFJlcXVlc3QgYXJndW1l
bnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3
aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcgYW5kIGZhaWxpbmcgcmVxdWVzdHMgYXNzZXJ0X3Rocm93
czogQ2FjaGUuYWRkQWxsIHNob3VsZCByZWplY3Qgd2l0aCBUeXBlRXJyb3IgaWYgYW55IHJlcXVl
c3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3Ii
KSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5h
ZGRBbGwgY2FsbGVkIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3Qgc3BlY2lmaWVkIHR3aWNl
IGFzc2VydF90aHJvd3M6IENhY2hlLmFkZEFsbCBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJy
b3IgaWYgdGhlIHNhbWUgcmVxdWVzdCBpcyBhZGRlZCB0d2ljZS4gZnVuY3Rpb24gImZ1bmN0aW9u
ICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1w
bGVtZW50ZWQiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yOiBw
cm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gOSwgZXhwZWN0ZWQgMTEKK1BBU1MgQ2FjaGUuYWRk
QWxsIHdpdGggYW4gZW1wdHkgYXJyYXkgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBV
UkwgYXJndW1lbnRzIAorUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyAK
K1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2Ygc3VjY2VlZGluZyBhbmQgZmFpbGluZyBy
ZXF1ZXN0cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qg
b2JqZWN0IHNwZWNpZmllZCB0d2ljZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93
aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdl
L3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3MDkxMTJiNTg5
MmRmODcxYjBkMTU2YWFmMjNjNmZiMTQxOTM5ZTUxLi40ZmNmNTQzYjc0ODFhM2U1Zjk0Njc0ZjQ1
YzljMWViMmU3OTc5MjQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNo
ZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRv
dy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwxMSBAQAogCiBQ
QVNTIENhY2hlU3RvcmFnZS5vcGVuIAotRkFJTCBDYWNoZVN0b3JhZ2UuZGVsZXRlIGRvb21zLCBi
dXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVt
ZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUgZG9vbXMsIGJ1dCBkb2VzIG5vdCBkZWxl
dGUgaW1tZWRpYXRlbHkgCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggYW4gZW1wdHkgbmFt
ZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLm9wZW4gd2l0aCBubyBhcmd1bWVudHMgCiBQQVNTIENhY2hl
U3RvcmFnZS5oYXMgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmhhcyB3
aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAotRkFJTCBDYWNoZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0
aW5nIGNhY2hlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3Rv
cmFnZS5vcGVuIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUg
d2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmRlbGV0ZSB3aXRoIG5vbmV4
aXN0ZW50IGNhY2hlIAogUEFTUyBDYWNoZVN0b3JhZ2UgbmFtZXMgYXJlIERPTVN0cmluZ3Mgbm90
IFVTVlN0cmluZ3MgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1h
ZGQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtYWRk
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMThmYzMyMmE2ZjMwMGI4ZDYxYjQ4OTdjZDQyMjY4
ZWE4MzJiNTNmLi5jZjc0Y2ZhZDZkZGYyZWU0ZDEyZjdmNmE1Nzc0NWVmZTYzOWI5OTQxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLWFkZC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMjAgKzEsMjAgQEAKIAogUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm8g
YXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggcmVsYXRpdmUgVVJMIHNwZWNp
ZmllZCBhcyBhIHN0cmluZyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBD
YWNoZS5hZGQgY2FsbGVkIHdpdGggbm9uLUhUVFAvSFRUUFMgVVJMIGFzc2VydF90aHJvd3M6IENh
Y2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yIG5vbi1IVFRQL0hUVFBTIFVSTHMu
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0
ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxl
ZCB3aXRoIFJlcXVlc3Qgb2JqZWN0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1G
QUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJlcXVlc3QgYXNzZXJ0X3Rocm93czogQ2Fj
aGUuYWRkIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3Igbm9uLUdFVCByZXF1ZXN0cy4gZnVu
Y3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRl
ZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBv
YmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHR3
aWNlIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3QgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBs
ZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB3aXRoIG51bGwgYm9keSAobm90
IGNvbnN1bWVkKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5h
ZGQgd2l0aCAyMDYgcmVzcG9uc2UgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWpl
Y3Qgb24gcGFydGlhbCByZXNwb25zZSBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0i
IHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RT
dXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIp
Ci1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSBhc3NlcnRfdGhyb3dzOiBDYWNo
ZS5hZGRBbGwgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvciBpZiBhbnkgcmVxdWVzdCBmYWls
cyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3Vw
cG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVj
dGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZCB3aXRo
IHJlcXVlc3QgdGhhdCByZXN1bHRzIGluIGEgc3RhdHVzIG9mIDQwNCBhc3NlcnRfdGhyb3dzOiBD
YWNoZS5hZGQgc2hvdWxkIHJlamVjdCBpZiByZXNwb25zZSBpcyAhb2sgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVF
cnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVz
dWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCBy
ZWplY3QgaWYgcmVzcG9uc2UgaXMgIW9rIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5v
dFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9y
IikKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIHJlbGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMg
YSBzdHJpbmcgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBub24tSFRUUC9IVFRQUyBVUkwg
CitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1ZXN0IG9iamVjdCAKK1BBU1MgQ2FjaGUu
YWRkIGNhbGxlZCB3aXRoIFBPU1QgcmVxdWVzdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB0d2lj
ZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1
ZXN0IHdpdGggbnVsbCBib2R5IChub3QgY29uc3VtZWQpIAorUEFTUyBDYWNoZS5hZGQgd2l0aCAy
MDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSAKK1BBU1Mg
Q2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNDA0IAor
UEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1
MDAgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIG5vIGFyZ3VtZW50cyAKIFBBU1MgQ2FjaGUuYWRk
QWxsIHdpdGggYSBtaXggb2YgdmFsaWQgYW5kIHVuZGVmaW5lZCBhcmd1bWVudHMgCi1GQUlMIENh
Y2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFycmF5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVt
ZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIFJlcXVl
c3QgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hl
LmFkZEFsbCB3aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcgYW5kIGZhaWxpbmcgcmVxdWVzdHMgYXNz
ZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCByZWplY3Qgd2l0aCBUeXBlRXJyb3IgaWYg
YW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJl
dyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9y
dGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJ
TCBDYWNoZS5hZGRBbGwgY2FsbGVkIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3Qgc3BlY2lm
aWVkIHR3aWNlIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZEFsbCBzaG91bGQgdGhyb3cgSW52YWxp
ZFN0YXRlRXJyb3IgaWYgdGhlIHNhbWUgcmVxdWVzdCBpcyBhZGRlZCB0d2ljZS4gZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBOb3QgaW1wbGVtZW50ZWQiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0
ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gOSwgZXhwZWN0ZWQgMTEKK1BBU1Mg
Q2FjaGUuYWRkQWxsIHdpdGggYW4gZW1wdHkgYXJyYXkgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRo
IHN0cmluZyBVUkwgYXJndW1lbnRzIAorUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFy
Z3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2Ygc3VjY2VlZGluZyBhbmQg
ZmFpbGluZyByZXF1ZXN0cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1l
IFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUt
c3RvcmFnZS93b3JrZXIvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNo
ZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3
MDkxMTJiNTg5MmRmODcxYjBkMTU2YWFmMjNjNmZiMTQxOTM5ZTUxLi40ZmNmNTQzYjc0ODFhM2U1
Zjk0Njc0ZjQ1YzljMWViMmU3OTc5MjQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dv
cmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9y
YWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwx
MSBAQAogCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIAotRkFJTCBDYWNoZVN0b3JhZ2UuZGVsZXRl
IGRvb21zLCBidXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBO
b3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUgZG9vbXMsIGJ1dCBkb2Vz
IG5vdCBkZWxldGUgaW1tZWRpYXRlbHkgCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggYW4g
ZW1wdHkgbmFtZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLm9wZW4gd2l0aCBubyBhcmd1bWVudHMgCiBQ
QVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9y
YWdlLmhhcyB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAotRkFJTCBDYWNoZVN0b3JhZ2Uub3BlbiB3
aXRoIGV4aXN0aW5nIGNhY2hlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNT
IENhY2hlU3RvcmFnZS5vcGVuIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENhY2hlU3RvcmFn
ZS5kZWxldGUgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmRlbGV0ZSB3
aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAogUEFTUyBDYWNoZVN0b3JhZ2UgbmFtZXMgYXJlIERPTVN0
cmluZ3Mgbm90IFVTVlN0cmluZ3MgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318583</attachid>
            <date>2017-08-18 22:35:04 -0700</date>
            <delta_ts>2017-08-21 17:25:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175677-20170818223503.patch</filename>
            <type>text/plain</type>
            <size>31633</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlM2E1ODA2ODIwZjhh
M2FjYTc3NTE4NjJjNTJhODgzMDQwNjQ4Ni4uOGU0Yjk2MDFkMjcxZWQ4NTYzZjZjM2M2Y2E0YWZm
YjllNWE4MDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTA4LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAg
IENhY2hlLmFkZEFsbCBpbXBsZW1lbnRhdGlvbiBpcyB0aGVuIGFzIGZvbGxvdzoKKyAgICAgICAg
LSBGZXRjaCB0aGUgcmVzb3VyY2VzIGluIHBhcmFsbGVsLgorICAgICAgICAtIFdhaXQgZm9yIGFs
bCB0aGVtIHRvIGNvbXBsZXRlIHVzaW5nIEZldGNoVGFza0NvdW50ZXIuCisgICAgICAgIC0gSWYg
YW4gZXJyb3IgaGFwcGVucyBpbiBhbnkgbG9hZCBvciBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IGFz
IGV4cGVjdGVkIGZvciBDYWNoZSBBUEksIHJlamVjdCB0aGUgcHJvbWlzZS4KKyAgICAgICAgLSBD
YWxsIHRoZSBiYXRjaCBwdXQgb3BlcmF0aW9uIHdpdGggYWxsIHJlY2VpdmVkIEZldGNoUmVzcG9u
c2Ugb2JqZWN0cy4KKworICAgICAgICBGZXRjaFRhc2tDb3VudGVyIGlzIHJlc3BvbnNpYmxlIHRv
IHdhaXQgZm9yIGVhY2ggcmVzcG9uc2UgdG8gYXJyaXZlLgorICAgICAgICBJdCB0aGVuIGNoZWNr
cyB3aGV0aGVyIHRoZSByZXNwb25zZSBpcyBmaW5lLAorICAgICAgICBJZiBub3QsIHRoZSBhZGRB
bGwgcHJvbWlzZSBpcyByZWplY3RlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCB3YWl0cyBmb3Ig
dGhlIGJvZHkgdG8gYmUgcmVjZWl2ZWQuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYSBoZWxwZXIg
cm91dGluZSB0byBjcmVhdGUgYSBGZXRjaFJlcXVlc3QgZnJvbSBhIGdpdmVuIFJlcXVlc3RJbmZv
LgorICAgICAgICBJbnRyb2R1Y2luZyBhIGhlbHBlciByb3V0aW5lIHRvIGNoZWNrIGZvciBWYXJ5
IEhlYWRlciAnKicgdmFsdWUgaW4gcmVzcG9uc2UgaGVhZGVycy4KKworICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRvTWF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpxdWVyeUNh
Y2hlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6fkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OmlzRG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFRhc2tDb3VudGVyOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6OnJlcXVlc3RGcm9tSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkQWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6a2V5cyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0Nvbm5lY3Rpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmJh
dGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlLmg6CisKIDIw
MTctMDgtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViQ3J5
cHRvXSBHZXQgcmlkIG9mIENyeXB0b0tleURhdGEgY2xhc3MgYW5kIGFsbCBpdHMgc3ViY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAppbmRleCBlMGFhMjFkYTFjNWFk
NGM0Y2Y2YzUwZjAxOTAwY2NlNDdmYjFhZmM0Li5iNWEyYjQwNmFhZjg3NjA2NDg2NDAyOTQ5YzRj
MmE0ZmE3MzEyMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcApAQCAt
MzYsNiArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZWNvcmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNoUmVxdWVz
dCYsIEZldGNoUmVzcG9uc2UmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkm
Jik7CisKIENhY2hlOjpDYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJp
bmcmJiBuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9uYW1lKFdURk1vdmUobmFtZSkpCkBAIC02MSwyMyArNjMsMjEgQEAgdm9pZCBDYWNoZTo6bWF0
Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGkKIAogdm9pZCBDYWNoZTo6ZG9NYXRjaChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZv
PiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBNYXRjaFR5cGUgbWF0Y2hUeXBlKQogeworICAgIGlmIChVTkxJS0VMWSgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUmVmUHRy
PEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKICAgICBpZiAoaW5mbykgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mby52YWx1ZSgpKSkg
ewotICAgICAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+Pihp
bmZvLnZhbHVlKCkpLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdC0+
bWV0aG9kKCkgIT0gIkdFVCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1hdGNoVHlwZSA9PSBNYXRjaFR5cGU6Ok9ubHlGaXJzdCkgewotICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+PihWZWN0b3I8UmVmPEZldGNo
UmVzcG9uc2U+PiB7IH0pOworICAgICAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJlcXVl
c3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8udmFsdWUoKSksIG9wdGlvbnMuaWdub3JlTWV0aG9kKTsK
KyAgICAgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAg
ICAgICAgaWYgKG1hdGNoVHlwZSA9PSBNYXRjaFR5cGU6Ok9ubHlGaXJzdCkgeworICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgcmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoaW5mby52YWx1ZSgpKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
KyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZl
dGNoUmVzcG9uc2U+Pj4oVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4geyB9KTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdE9yRXhjZXB0
aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdCkgewpA
QCAtMTA5LDQ1ICsxMDksMTc3IEBAIHZvaWQgQ2FjaGU6OmRvTWF0Y2goc3RkOjpvcHRpb25hbDxS
ZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgfSk7CiB9
CiAKLXZvaWQgQ2FjaGU6OmFkZChSZXF1ZXN0SW5mbyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBDYWNoZTo6YWRkKFJlcXVlc3RJbmZvJiYgaW5mbywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQi
KX0pOworICAgIFZlY3RvcjxSZXF1ZXN0SW5mbz4gaW5mb3M7CisgICAgaW5mb3MuYXBwZW5kKFdU
Rk1vdmUoaW5mbykpOworICAgIGFkZEFsbChXVEZNb3ZlKGluZm9zKSwgV1RGTW92ZShwcm9taXNl
KSk7CiB9CiAKLXZvaWQgQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzUmVz
cG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJ
SUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCIpfSk7CisgICAgYXV0byB2YXJ5VmFsdWUgPSByZXNw
b25zZS5oZWFkZXJzKCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBIZWFkZXJO
YW1lOjpWYXJ5KTsKKyAgICBib29sIGhhc1N0YXIgPSBmYWxzZTsKKyAgICB2YXJ5VmFsdWUuc3Bs
aXQoJywnLCBmYWxzZSwgWyZdKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICBpZiAoIWhhc1N0
YXIgJiYgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSA9PSAiKiIpCisgICAgICAgICAgICBoYXNTdGFyID0gdHJ1ZTsKKyAgICB9
KTsKKyAgICByZXR1cm4gaGFzU3RhcjsKIH0KIAotdm9pZCBDYWNoZTo6cHV0KFJlcXVlc3RJbmZv
JiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCitjbGFzcyBGZXRjaFRhc2tzSGFuZGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEZldGNoVGFza3NIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmV0Y2hU
YXNrc0hhbmRsZXIoRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6UmVjb3JkPj4mJik+JiYgY2FsbGJhY2spCisgICAgICAgIDogbV9jYWxsYmFj
ayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgfkZldGNoVGFza3NIYW5k
bGVyKCkKKyAgICB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxi
YWNrKSkKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUobV9yZWNvcmRzKSk7CisgICAgfQor
CisgICAgY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mIHJlY29y
ZHMoKSBjb25zdCB7IHJldHVybiBtX3JlY29yZHM7IH0KKworICAgIHNpemVfdCBhZGRSZWNvcmQo
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiYgcmVjb3JkKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFpc0RvbmUoKSk7CisgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShyZWNv
cmQpKTsKKyAgICAgICAgcmV0dXJuIG1fcmVjb3Jkcy5zaXplKCkgLSAxOworICAgIH0KKworICAg
IHZvaWQgYWRkUmVzcG9uc2VCb2R5KHNpemVfdCBwb3NpdGlvbiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0RvbmUoKSk7CisgICAgICAgIG1fcmVj
b3Jkc1twb3NpdGlvbl0ucmVzcG9uc2VCb2R5ID0gV1RGTW92ZShkYXRhKTsKKyAgICB9CisKKyAg
ICBib29sIGlzRG9uZSgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxiYWNrOyB9CisKKyAgICB2b2lk
IGVycm9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICB7CisgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoZXhjZXB0aW9uKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZWNvcmQ+IG1fcmVjb3JkczsKKyAgICBGdW5jdGlvbjx2b2lkKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmKT4gbV9jYWxs
YmFjazsKK307CisKK0V4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBDYWNoZTo6cmVxdWVz
dEZyb21JbmZvKFJlcXVlc3RJbmZvJiYgaW5mbywgYm9vbCBpZ25vcmVNZXRob2QpCiB7CiAgICAg
UmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mbykpIHsKICAgICAgICAgcmVxdWVzdCA9IFdU
Rjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvKS5yZWxlYXNlTm9uTnVsbCgpOwotICAg
ICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIpIHsKLSAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0IG1l
dGhvZCBpcyBub3QgR0VUIikgfSk7CisgICAgICAgIGlmIChyZXF1ZXN0LT5tZXRob2QoKSAhPSAi
R0VUIiAmJiAhaWdub3JlTWV0aG9kKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0IG1ldGhvZCBpcyBub3QgR0VUIikgfTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mbyksIHsgfSkucmVsZWFzZVJldHVyblZhbHVl
KCk7CisKKyAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkocmVxdWVzdC0+dXJsKCkpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlcXVl
c3QgdXJsIGlzIG5vdCBIVFRQL0hUVFBTIikgfTsKKworICAgIHJldHVybiByZXF1ZXN0LnJlbGVh
c2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+
JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYg
KFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBWZWN0b3I8UmVmPEZldGNoUmVxdWVzdD4+IHJlcXVlc3RzOworICAgIHJlcXVlc3RzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoaW5mb3Muc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGluZm8g
OiBpbmZvcykgeworICAgICAgICBib29sIGlnbm9yZU1ldGhvZCA9IGZhbHNlOworICAgICAgICBh
dXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8pLCBp
Z25vcmVNZXRob2QpOworICAgICAgICBpZiAocmVxdWVzdE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXF1ZXN0T3JFeGNlcHRpb24ucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
KyAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfQorCisgICAgYXV0byB0YXNrSGFuZGxlciA9IGFkb3B0
UmVmKCpuZXcgRmV0Y2hUYXNrc0hhbmRsZXIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAg
fQorICAgICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsK
KyAgICAgICAgfSk7CisgICAgfSkpOworCisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVz
dHMpIHsKKyAgICAgICAgYXV0byYgcmVxdWVzdFJlZmVyZW5jZSA9IHJlcXVlc3QuZ2V0KCk7Cisg
ICAgICAgIEZldGNoUmVzcG9uc2U6OmZldGNoKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJl
cXVlc3RSZWZlcmVuY2UsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgdGFza0hh
bmRsZXIgPSB0YXNrSGFuZGxlci5jb3B5UmVmKCldKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2Um
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisKKyAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNE
b25lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmVycm9yKHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYXV0byYgcmVzcG9uc2UgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CisKKyAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2soKSkgeworICAgICAg
ICAgICAgICAgIHRhc2tIYW5kbGVyLT5lcnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiUmVzcG9uc2UgaXMgbm90IE9LIikgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaGFzUmVzcG9uc2VWYXJ5U3Rhckhl
YWRlclZhbHVlKHJlc3BvbnNlKSkgeworICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5lcnJv
cihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVzcG9uc2UgaGFzIGEgJyon
IFZhcnkgaGVhZGVyIHZhbHVlIikgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKCkgPT0gMjA2KSB7Cisg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJSZXNwb25zZSBpcyBhIDIwNiBwYXJ0aWFsIikgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDYWNoZVF1ZXJ5T3B0
aW9ucyBvcHRpb25zOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiB0YXNr
SGFuZGxlci0+cmVjb3JkcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVj
b3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0aW9ucykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGFza0hhbmRsZXItPmVycm9yKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoImFkZEFsbCBjYW5ub3Qgc3RvcmUgc2V2ZXJhbCBtYXRjaGluZyByZXF1ZXN0
cyIpfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFu
ZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25z
ZSwgbnVsbHB0cikpOworCisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVdoZW5Mb2Fk
ZWQoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uXShF
eGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmVycm9yKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VC
b2R5KHJlY29yZFBvc2l0aW9uLCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKICAgICB9Cit9CisKK3ZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0SW5m
byYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KHJlcXVlc3QtPnVybCgpKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCB1cmwgaXMgbm90IEhUVFAvSFRU
UFMiKSB9KTsKKyAgICBib29sIGlnbm9yZU1ldGhvZCA9IGZhbHNlOworICAgIGF1dG8gcmVxdWVz
dE9yRXhjZXB0aW9uID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mbyksIGlnbm9yZU1ldGhv
ZCk7CisgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAg
ICBwcm9taXNlLnJlamVjdChyZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0T3JFeGNl
cHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVm
ZmljaWVudCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3BsaXQgYW5kIHRyaW0gd2hpdGVzcGFjZXMg
YXQgdGhlIHNhbWUgdGltZS4KLSAgICBhdXRvIHZhcnlWYWx1ZSA9IHJlc3BvbnNlLT5oZWFkZXJz
KCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsK
LSAgICBWZWN0b3I8U3RyaW5nPiB2YXJ5SGVhZGVyTmFtZXM7Ci0gICAgdmFyeVZhbHVlLnNwbGl0
KCcsJywgZmFsc2UsIHZhcnlIZWFkZXJOYW1lcyk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogdmFy
eUhlYWRlck5hbWVzKSB7Ci0gICAgICAgIGlmIChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBT
cGFjZXMobmFtZSkgPT0gIioiKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVzcG9uc2UgaGFzIGEgJyonIFZhcnkgaGVh
ZGVyIHZhbHVlIikgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAo
aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKHJlc3BvbnNlLmdldCgpKSkgeworICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVz
cG9uc2UgaGFzIGEgJyonIFZhcnkgaGVhZGVyIHZhbHVlIikgfSk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAocmVzcG9uc2UtPnN0YXR1cygpID09IDIwNikgewpAQCAtMTY4LDcg
KzMwMCw3IEBAIHZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJl
c3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVmCiAKICAgICBpZiAocmVzcG9uc2UtPmlz
TG9hZGluZygpKSB7CiAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAg
cmVzcG9uc2UtPmNvbnN1bWVCb2R5V2hlbkxvYWRlZChbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlcXVlc3QgPSByZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keVdoZW5Mb2FkZWQo
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgdGhpc10oRXhjZXB0aW9uT3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTE4NCw0NiArMzE2LDQw
IEBAIHZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNl
PiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBiYXRjaFB1dE9wZXJhdGlvbigqcmVxdWVzdCwgcmVzcG9uc2UuZ2V0KCksIHJlc3BvbnNlLT5j
b25zdW1lQm9keSgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0Lmdl
dCgpLCByZXNwb25zZS5nZXQoKSwgcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCksIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCiB2
b2lkIENhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0g
ICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mbykpIHsKLSAgICAgICAgcmVxdWVzdCA9
IFdURjo6Z2V0PFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvKS5yZWxlYXNlTm9uTnVsbCgpOwot
ICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIgJiYgIW9wdGlvbnMuaWdub3Jl
TWV0aG9kKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2UpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgV1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoVU5M
SUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gcmVxdWVzdE9yRXhjZXB0aW9uID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mbyks
IG9wdGlvbnMuaWdub3JlTWV0aG9kKTsKKyAgICBpZiAocmVxdWVzdE9yRXhjZXB0aW9uLmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBiYXRjaERlbGV0ZU9wZXJhdGlvbigqcmVxdWVzdCwgV1RGTW92
ZShvcHRpb25zKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjxib29s
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYmF0Y2hEZWxldGVPcGVyYXRpb24ocmVxdWVzdE9y
RXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPGJvb2w+JiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0K
IAogdm9pZCBDYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENh
Y2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgS2V5c1Byb21pc2UmJiBwcm9taXNlKQogeworICAg
IGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gcmVxdWVzdDsKICAgICBpZiAoaW5mbykgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4o
aW5mby52YWx1ZSgpKSkgewotICAgICAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+PihpbmZvLnZhbHVlKCkpLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAg
ICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9k
KSB7Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFZlY3RvcjxSZWY8RmV0Y2hSZXF1
ZXN0Pj4geyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcmVxdWVzdCA9
IEZldGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUo
aW5mby52YWx1ZSgpKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgYXV0byBy
ZXF1ZXN0T3JFeGNlcHRpb24gPSByZXF1ZXN0RnJvbUluZm8oV1RGTW92ZShpbmZvLnZhbHVlKCkp
LCBvcHRpb25zLmlnbm9yZU1ldGhvZCk7CisgICAgICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24u
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVm
PEZldGNoUmVxdWVzdD4+IHsgfSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
ICAgICB9CiAKICAgICBpZiAoIXJlcXVlc3QpIHsKQEAgLTI5NSw3ICs0MjEsNyBAQCB2b2lkIENh
Y2hlOjpiYXRjaERlbGV0ZU9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIENh
Y2hlUXVlcnlPcHRpb25zJgogICAgIH0pOwogfQogCi1zdGF0aWMgaW5saW5lIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rpb25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0
JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5KQorQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZl
dGNoUmVzcG9uc2UmIHJlc3BvbnNlLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJv
ZHkmJiByZXNwb25zZUJvZHkpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBhIHNldEhUVFBIZWFkZXJG
aWVsZHMgb24gUmVzb3VyY2VSZXNwb25zZUJhc2UuCiAgICAgUmVzb3VyY2VSZXNwb25zZSBjYWNo
ZWRSZXNwb25zZSA9IHJlc3BvbnNlLnJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTMxNiw2ICs0NDIs
MTEgQEAgdm9pZCBDYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiBy
ZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNwb24KICAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVjb3JkPiByZWNvcmRzOwogICAgIHJlY29yZHMuYXBwZW5kKHRvQ29ubmVjdGlv
blJlY29yZChyZXF1ZXN0LCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZUJvZHkpKSk7CiAKKyAg
ICBiYXRjaFB1dE9wZXJhdGlvbihXVEZNb3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
Cit9CisKK3ZvaWQgQ2FjaGU6OmJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQorewogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKICAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoUHV0T3BlcmF0aW9uKG1faWRlbnRpZmllciwgV1RG
TW92ZShyZWNvcmRzKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFZlY3Rv
cjx1aW50NjRfdD4mJiwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3IgZXJyb3IpIHsKICAg
ICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaApp
bmRleCBjOTk4ZTA3MWNlYzZlNDhhZTYzY2I3ODZmNmY1MTg4N2E4ODNlMWM3Li4yMTMwMzc0ZGQ0
MTFhMzEyNjQ3NTVjNmMwNjIyMzA3ZGY4NmU3MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZS5oCkBAIC01OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIE1h
dGNoVHlwZSB7IEFsbCwgT25seUZpcnN0IH07CiAgICAgdm9pZCBkb01hdGNoKHN0ZDo6b3B0aW9u
YWw8UmVxdWVzdEluZm8+JiYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYsIE1hdGNoVHlwZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IHJl
cXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmLCBib29sIGlnbm9yZU1ldGhvZCk7CiAKICAgICAv
LyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKQEAgLTcwLDYgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVxdWVzdD4mJiwgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0
b3JhZ2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3Qg
RmV0Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4
Y2VwdGlvbk9yPGJvb2w+JiYpPiYmKTsKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0
IEZldGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2UmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZXNwb25zZUJvZHkmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYm
KTsKKyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQ+JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4m
Jik7CiAKICAgICB2b2lkIHVwZGF0ZVJlY29yZHMoVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlJlY29yZD4mJik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDhkNWVj
YjdlYzdlN2Q0ZDE0YzRmMjQ0Nzk1ZjU4MTU0M2NhMGUxNjYuLjQ4ODFjNjBkMWI4NDYzMjA2MGE0
ZjcwYzgzODg5YmFhOGE2YWQ5MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE3IEBACiAyMDE3LTA4LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQgc3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFs
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hl
LWFkZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dv
cmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKworMjAxNy0wOC0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgW0NhY2hlIEFQSV0gQWRk
IHN1cHBvcnQgZm9yIGJlaW5nIGxvYWRlZCByZXNwb25zZXMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTczMgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNo
ZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUt
c3RvcmFnZS93aW5kb3cvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMThmYzMy
MmE2ZjMwMGI4ZDYxYjQ4OTdjZDQyMjY4ZWE4MzJiNTNmLi5jZjc0Y2ZhZDZkZGYyZWU0ZDEyZjdm
NmE1Nzc0NWVmZTYzOWI5OTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9j
YWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93
L2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMjAgQEAKIAogUEFTUyBD
YWNoZS5hZGQgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGQgY2FsbGVk
IHdpdGggcmVsYXRpdmUgVVJMIHNwZWNpZmllZCBhcyBhIHN0cmluZyBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
Tm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm9uLUhUVFAvSFRU
UFMgVVJMIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Ig
Zm9yIG5vbi1IVFRQL0hUVFBTIFVSTHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5v
dFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9y
IikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFJlcXVlc3Qgb2JqZWN0IHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJl
cXVlc3QgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBm
b3Igbm9uLUdFVCByZXF1ZXN0cy4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQot
RkFJTCBDYWNoZS5hZGQgY2FsbGVkIHR3aWNlIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3Qg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90
U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggcmVx
dWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1bWVkKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGlt
cGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgYXNzZXJ0X3Rocm93
czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3Qgb24gcGFydGlhbCByZXNwb25zZSBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6
IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAi
VHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNw
b25zZSBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVF
cnJvciBpZiBhbnkgcmVxdWVzdCBmYWlscyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBl
IH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJO
b3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJv
ciIpCi1GQUlMIENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCByZXN1bHRzIGluIGEgc3RhdHVz
IG9mIDQwNCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHJlamVjdCBpZiByZXNwb25z
ZSBpcyAhb2sgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3Ii
KSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5h
ZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgYXNzZXJ0X3Ro
cm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVzcG9uc2UgaXMgIW9rIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0
ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIHJl
bGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQg
d2l0aCBub24tSFRUUC9IVFRQUyBVUkwgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1
ZXN0IG9iamVjdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFBPU1QgcmVxdWVzdCAKK1BB
U1MgQ2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IAor
UEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHdpdGggbnVsbCBib2R5IChub3QgY29uc3VtZWQp
IAorUEFTUyBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZEFsbCB3
aXRoIDIwNiByZXNwb25zZSAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3Vs
dHMgaW4gYSBzdGF0dXMgb2YgNDA0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQg
cmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIG5vIGFy
Z3VtZW50cyAKIFBBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2YgdmFsaWQgYW5kIHVuZGVm
aW5lZCBhcmd1bWVudHMgCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFycmF5IHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIHN0
cmluZyBVUkwgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlM
IENhY2hlLmFkZEFsbCB3aXRoIFJlcXVlc3QgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcg
YW5kIGZhaWxpbmcgcmVxdWVzdHMgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCBy
ZWplY3Qgd2l0aCBUeXBlRXJyb3IgaWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVF
cnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgY2FsbGVkIHdpdGggdGhlIHNh
bWUgUmVxdWVzdCBvYmplY3Qgc3BlY2lmaWVkIHR3aWNlIGFzc2VydF90aHJvd3M6IENhY2hlLmFk
ZEFsbCBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIHNhbWUgcmVxdWVzdCBp
cyBhZGRlZCB0d2ljZS4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiIHRoYXQgaXMgbm90IGEg
RE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwg
dG8gOSwgZXhwZWN0ZWQgMTEKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYW4gZW1wdHkgYXJyYXkg
CitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIAorUEFTUyBDYWNo
ZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGgg
YSBtaXggb2Ygc3VjY2VlZGluZyBhbmQgZmFpbGluZyByZXF1ZXN0cyAKK1BBU1MgQ2FjaGUuYWRk
QWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0
dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3MDkxMTJiNTg5MmRmODcxYjBkMTU2YWFmMjNjNmZiMTQx
OTM5ZTUxLi40ZmNmNTQzYjc0ODFhM2U1Zjk0Njc0ZjQ1YzljMWViMmU3OTc5MjQ1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMSwxMSArMSwxMSBAQAogCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIAot
RkFJTCBDYWNoZVN0b3JhZ2UuZGVsZXRlIGRvb21zLCBidXQgZG9lcyBub3QgZGVsZXRlIGltbWVk
aWF0ZWx5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFn
ZS5kZWxldGUgZG9vbXMsIGJ1dCBkb2VzIG5vdCBkZWxldGUgaW1tZWRpYXRlbHkgCiBQQVNTIENh
Y2hlU3RvcmFnZS5vcGVuIHdpdGggYW4gZW1wdHkgbmFtZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLm9w
ZW4gd2l0aCBubyBhcmd1bWVudHMgCiBQQVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0aCBleGlzdGlu
ZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmhhcyB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAot
RkFJTCBDYWNoZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0aW5nIGNhY2hlIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggZXhpc3Rpbmcg
Y2FjaGUgCiBQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBB
U1MgQ2FjaGVTdG9yYWdlLmRlbGV0ZSB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAogUEFTUyBDYWNo
ZVN0b3JhZ2UgbmFtZXMgYXJlIERPTVN0cmluZ3Mgbm90IFVTVlN0cmluZ3MgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCAzMThmYzMyMmE2ZjMwMGI4ZDYxYjQ4OTdjZDQyMjY4ZWE4MzJiNTNmLi5jZjc0Y2ZhZDZkZGYy
ZWU0ZDEyZjdmNmE1Nzc0NWVmZTYzOWI5OTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdl
L3dvcmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3Jh
Z2Uvd29ya2VyL2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMjAgQEAK
IAogUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIAotRkFJTCBDYWNoZS5h
ZGQgY2FsbGVkIHdpdGggcmVsYXRpdmUgVVJMIHNwZWNpZmllZCBhcyBhIHN0cmluZyBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm9u
LUhUVFAvSFRUUFMgVVJMIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IgZm9yIG5vbi1IVFRQL0hUVFBTIFVSTHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7
IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVu
dGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgi
VHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFJlcXVlc3Qgb2JqZWN0IHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0
aCBQT1NUIHJlcXVlc3QgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvciBmb3Igbm9uLUdFVCByZXF1ZXN0cy4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBl
RXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHR3aWNlIHdpdGggdGhlIHNhbWUgUmVxdWVz
dCBvYmplY3QgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRk
IHdpdGggcmVxdWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1bWVkKSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgYXNz
ZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3Qgb24gcGFydGlhbCByZXNwb25zZSBm
dW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9y
dGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVk
IG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRo
IDIwNiByZXNwb25zZSBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwgc2hvdWxkIHJlamVjdCB3
aXRoIFR5cGVFcnJvciBpZiBhbnkgcmVxdWVzdCBmYWlscyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkg
eyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1l
bnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAo
IlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCByZXN1bHRzIGlu
IGEgc3RhdHVzIG9mIDQwNCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHJlamVjdCBp
ZiByZXNwb25zZSBpcyAhb2sgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJl
dyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9y
dGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJ
TCBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAg
YXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVzcG9uc2UgaXMgIW9r
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0
ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK1BBU1MgQ2FjaGUuYWRkIGNhbGxl
ZCB3aXRoIHJlbGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgCitQQVNTIENhY2hlLmFk
ZCBjYWxsZWQgd2l0aCBub24tSFRUUC9IVFRQUyBVUkwgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQg
d2l0aCBSZXF1ZXN0IG9iamVjdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFBPU1QgcmVx
dWVzdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qg
b2JqZWN0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHdpdGggbnVsbCBib2R5IChub3Qg
Y29uc3VtZWQpIAorUEFTUyBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgCitQQVNTIENhY2hl
LmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0
aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNDA0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1
ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgCiBQQVNTIENhY2hlLmFkZEFsbCB3
aXRoIG5vIGFyZ3VtZW50cyAKIFBBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2YgdmFsaWQg
YW5kIHVuZGVmaW5lZCBhcmd1bWVudHMgCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5
IGFycmF5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFs
bCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50
ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIFJlcXVlc3QgYXJndW1lbnRzIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHN1
Y2NlZWRpbmcgYW5kIGZhaWxpbmcgcmVxdWVzdHMgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxs
IHNob3VsZCByZWplY3Qgd2l0aCBUeXBlRXJyb3IgaWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmpl
Y3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgY2FsbGVkIHdp
dGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3Qgc3BlY2lmaWVkIHR3aWNlIGFzc2VydF90aHJvd3M6
IENhY2hlLmFkZEFsbCBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIHNhbWUg
cmVxdWVzdCBpcyBhZGRlZCB0d2ljZS4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiIHRoYXQg
aXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIg
aXMgZXF1YWwgdG8gOSwgZXhwZWN0ZWQgMTEKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYW4gZW1w
dHkgYXJyYXkgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIAor
UEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRk
QWxsIHdpdGggYSBtaXggb2Ygc3VjY2VlZGluZyBhbmQgZmFpbGluZyByZXF1ZXN0cyAKK1BBU1Mg
Q2FjaGUuYWRkQWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmll
ZCB0d2ljZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtc3Rv
cmFnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1z
dG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA3MDkxMTJiNTg5MmRmODcxYjBkMTU2YWFm
MjNjNmZiMTQxOTM5ZTUxLi40ZmNmNTQzYjc0ODFhM2U1Zjk0Njc0ZjQ1YzljMWViMmU3OTc5MjQ1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdl
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwxMSBAQAogCiBQQVNTIENhY2hlU3RvcmFn
ZS5vcGVuIAotRkFJTCBDYWNoZVN0b3JhZ2UuZGVsZXRlIGRvb21zLCBidXQgZG9lcyBub3QgZGVs
ZXRlIGltbWVkaWF0ZWx5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENh
Y2hlU3RvcmFnZS5kZWxldGUgZG9vbXMsIGJ1dCBkb2VzIG5vdCBkZWxldGUgaW1tZWRpYXRlbHkg
CiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggYW4gZW1wdHkgbmFtZSAKIFBBU1MgQ2FjaGVT
dG9yYWdlLm9wZW4gd2l0aCBubyBhcmd1bWVudHMgCiBQQVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0
aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmhhcyB3aXRoIG5vbmV4aXN0ZW50
IGNhY2hlIAotRkFJTCBDYWNoZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0aW5nIGNhY2hlIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGgg
ZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUgd2l0aCBleGlzdGluZyBj
YWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmRlbGV0ZSB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAog
UEFTUyBDYWNoZVN0b3JhZ2UgbmFtZXMgYXJlIERPTVN0cmluZ3Mgbm90IFVTVlN0cmluZ3MgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318706</attachid>
            <date>2017-08-21 17:25:15 -0700</date>
            <delta_ts>2017-08-21 18:22:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175677-20170821172514.patch</filename>
            <type>text/plain</type>
            <size>33655</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI4ZmFhNWU2Y2I2ODJi
YWU5NDIzNWYzYjRjNDEwMGI5ZDViOWE2Ni4uNTE4NmIzZmE3ZTBmMGNmODY2M2RhYzU3MTIzZjkx
NTFkNmQ3ZGVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE3LTA4LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAg
IENhY2hlLmFkZEFsbCBpbXBsZW1lbnRhdGlvbiBpcyB0aGVuIGFzIGZvbGxvdzoKKyAgICAgICAg
LSBGZXRjaCB0aGUgcmVzb3VyY2VzIGluIHBhcmFsbGVsLgorICAgICAgICAtIFdhaXQgZm9yIGFs
bCB0aGVtIHRvIGNvbXBsZXRlIHVzaW5nIEZldGNoVGFza0NvdW50ZXIuCisgICAgICAgIC0gSWYg
YW4gZXJyb3IgaGFwcGVucyBpbiBhbnkgbG9hZCBvciBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IGFz
IGV4cGVjdGVkIGZvciBDYWNoZSBBUEksIHJlamVjdCB0aGUgcHJvbWlzZS4KKyAgICAgICAgLSBD
YWxsIHRoZSBiYXRjaCBwdXQgb3BlcmF0aW9uIHdpdGggYWxsIHJlY2VpdmVkIEZldGNoUmVzcG9u
c2Ugb2JqZWN0cy4KKworICAgICAgICBGZXRjaFRhc2tDb3VudGVyIGlzIHJlc3BvbnNpYmxlIHRv
IHdhaXQgZm9yIGVhY2ggcmVzcG9uc2UgdG8gYXJyaXZlLgorICAgICAgICBJdCB0aGVuIGNoZWNr
cyB3aGV0aGVyIHRoZSByZXNwb25zZSBpcyBmaW5lLAorICAgICAgICBJZiBub3QsIHRoZSBhZGRB
bGwgcHJvbWlzZSBpcyByZWplY3RlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCB3YWl0cyBmb3Ig
dGhlIGJvZHkgdG8gYmUgcmVjZWl2ZWQuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYSBoZWxwZXIg
cm91dGluZSB0byBjcmVhdGUgYSBGZXRjaFJlcXVlc3QgZnJvbSBhIGdpdmVuIFJlcXVlc3RJbmZv
LgorICAgICAgICBJbnRyb2R1Y2luZyBhIGhlbHBlciByb3V0aW5lIHRvIGNoZWNrIGZvciBWYXJ5
IEhlYWRlciAnKicgdmFsdWUgaW4gcmVzcG9uc2UgaGVhZGVycy4KKworICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRvTWF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpxdWVyeUNh
Y2hlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6fkZldGNoVGFza0NvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OmlzRG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFRhc2tDb3VudGVyOjpyZWplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6OnJlcXVlc3RGcm9tSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkQWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGU6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6a2V5cyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0Nvbm5lY3Rpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmJh
dGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlLmg6CisKKzIw
MTctMDgtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFtD
YWNoZSBBUEldIEFkZCBzdXBwb3J0IGZvciBDYWNoZVN0b3JhZ2UubWF0Y2gKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTc0NwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwCmluZGV4IDBjZmE2Y2VjOWRlODRhZTUyY2VhYTU5NDQw
ZmRhNGZlZDcyNzVhOTMuLjRhMTMzNGI0ZTZjYzM3NTBiMDcwZGI5YTgyOWYzZWEyMGJkY2VmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwCkBAIC0zNiw2ICszNiw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OlJlY29yZCB0b0Nvbm5lY3Rpb25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hSZXNw
b25zZSYsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSYmKTsKKwogQ2FjaGU6
OkNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24pCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX25hbWUoV1RGTW92
ZShuYW1lKSkKQEAgLTYyLDIwICs2NCwxNyBAQCB2b2lkIENhY2hlOjptYXRjaChSZXF1ZXN0SW5m
byYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUAogCiB2
b2lkIENhY2hlOjpkb01hdGNoKFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMm
JiBvcHRpb25zLCBNYXRjaENhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEZldGNo
UmVxdWVzdD4gcmVxdWVzdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8
RmV0Y2hSZXF1ZXN0Pj4oaW5mbykpIHsKLSAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0
cjxGZXRjaFJlcXVlc3Q+PihpbmZvKS5yZWxlYXNlTm9uTnVsbCgpOwotICAgICAgICBpZiAocmVx
dWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIgJiYgIW9wdGlvbnMuaWdub3JlTWV0aG9kKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVxdWVzdCA9IEZldGNoUmVx
dWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mbyksIHsg
fSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlcXVlc3RPckV4Y2Vw
dGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8pLCBvcHRpb25zLmlnbm9yZU1ldGhv
ZCk7CisgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAg
ICBjYWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBhdXRvIHJl
cXVlc3QgPSByZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBx
dWVyeUNhY2hlKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShvcHRpb25zKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNv
cmQ+JiByZWNvcmRzKSBtdXRhYmxlIHsKKyAgICBxdWVyeUNhY2hlKHJlcXVlc3QuZ2V0KCksIFdU
Rk1vdmUob3B0aW9ucyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBWZWN0
b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYgcmVjb3JkcykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChy
ZWNvcmRzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC04NiwxOSArODUsMTcgQEAgdm9pZCBDYWNoZTo6ZG9NYXRjaChS
ZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgTWF0Y2hDYWxs
YmEKIAogdm9pZCBDYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBp
bmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIE1hdGNoQWxsUHJvbWlzZSYmIHByb21p
c2UpCiB7CisgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAg
ICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiByZXF1ZXN0OwogICAgIGlm
IChpbmZvKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGZXRj
aFJlcXVlc3Q+PihpbmZvLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICByZXF1ZXN0ID0gV1RGOjpn
ZXQ8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8udmFsdWUoKSkucmVsZWFzZU5vbk51bGwoKTsK
LSAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5tZXRob2QoKSAhPSAiR0VUIiAmJiAhb3B0aW9ucy5p
Z25vcmVNZXRob2QpIHsKLSAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoeyB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6
Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby52YWx1ZSgpKSwg
eyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRp
b24gPSByZXF1ZXN0RnJvbUluZm8oV1RGTW92ZShpbmZvLnZhbHVlKCkpLCBvcHRpb25zLmlnbm9y
ZU1ldGhvZCk7CisgICAgICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh7IH0pOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFz
ZVJldHVyblZhbHVlKCk7CiAgICAgfQogCiAgICAgaWYgKCFyZXF1ZXN0KSB7CkBAIC0xMjAsNDUg
KzExNywxNzUgQEAgdm9pZCBDYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5m
bz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGkKICAgICB9KTsKIH0KIAotdm9pZCBD
YWNoZTo6YWRkKFJlcXVlc3RJbmZvJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCit2b2lkIENhY2hlOjphZGQoUmVxdWVzdEluZm8mJiBpbmZvLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCIpfSk7CisgICAg
YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4geyBXVEZNb3ZlKGluZm8pIH0sIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCi12b2lkIENhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorc3RhdGljIGlubGluZSBib29sIGhh
c1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZShjb25zdCBGZXRjaFJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
QVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQiKX0pOworICAgIGF1dG8gdmFyeVZhbHVlID0g
cmVzcG9uc2UuaGVhZGVycygpLmludGVybmFsSGVhZGVycygpLmdldChXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZTo6VmFyeSk7CisgICAgYm9vbCBoYXNTdGFyID0gZmFsc2U7CisgICAgdmFyeVZhbHVl
LnNwbGl0KCcsJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgaWYgKCFo
YXNTdGFyICYmIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyh2aWV3LnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkgPT0gIioiKQorICAgICAgICAgICAgaGFzU3RhciA9IHRydWU7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGhhc1N0YXI7CiB9CiAKLXZvaWQgQ2FjaGU6OnB1dChSZXF1ZXN0
SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorY2xhc3MgRmV0Y2hUYXNrc0hhbmRsZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxGZXRjaFRhc2tzSGFuZGxlcj4geworcHVibGljOgorICAgIGV4cGxpY2l0IEZl
dGNoVGFza3NIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OlJlY29yZD4+JiYpPiYmIGNhbGxiYWNrKQorICAgICAgICA6IG1fY2Fs
bGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisgICAgeworICAgIH0KKworICAgIH5GZXRjaFRhc2tz
SGFuZGxlcigpCisgICAgeworICAgICAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgICAgIG1f
Y2FsbGJhY2soV1RGTW92ZShtX3JlY29yZHMpKTsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYgcmVjb3JkcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjb3JkczsgfQorCisgICAgc2l6ZV90IGFkZFJlY29yZChDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQmJiByZWNvcmQpCisgICAgeworICAgICAgICBBU1NFUlQoIWlzRG9uZSgpKTsK
KyAgICAgICAgbV9yZWNvcmRzLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOworICAgICAgICByZXR1
cm4gbV9yZWNvcmRzLnNpemUoKSAtIDE7CisgICAgfQorCisgICAgdm9pZCBhZGRSZXNwb25zZUJv
ZHkoc2l6ZV90IHBvc2l0aW9uLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWlzRG9uZSgpKTsKKyAgICAgICAgbV9yZWNvcmRzW3Bvc2l0aW9uXS5yZXNw
b25zZUJvZHkgPSBXVEZNb3ZlKGRhdGEpOworICAgIH0KKworICAgIGJvb2wgaXNEb25lKCkgY29u
c3QgeyByZXR1cm4gIW1fY2FsbGJhY2s7IH0KKworICAgIHZvaWQgZXJyb3IoRXhjZXB0aW9uJiYg
ZXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1f
Y2FsbGJhY2spKQorICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24pKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZD4gbV9yZWNvcmRzOworICAgIEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4+JiYpPiBtX2NhbGxiYWNrOworfTsKKworRXhjZXB0
aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IENhY2hlOjpyZXF1ZXN0RnJvbUluZm8oUmVxdWVzdElu
Zm8mJiBpbmZvLCBib29sIGlnbm9yZU1ldGhvZCkKIHsKICAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0
PiByZXF1ZXN0OwogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGZXRjaFJl
cXVlc3Q+PihpbmZvKSkgewogICAgICAgICByZXF1ZXN0ID0gV1RGOjpnZXQ8UmVmUHRyPEZldGNo
UmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgIGlmIChyZXF1ZXN0LT5t
ZXRob2QoKSAhPSAiR0VUIikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3QgbWV0aG9kIGlzIG5vdCBHRVQiKSB9
KTsKKyAgICAgICAgaWYgKHJlcXVlc3QtPm1ldGhvZCgpICE9ICJHRVQiICYmICFpZ25vcmVNZXRo
b2QpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIlJlcXVlc3QgbWV0aG9kIGlzIG5vdCBHRVQiKSB9OworICAgIH0gZWxzZQorICAgICAgICBy
ZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
V1RGTW92ZShpbmZvKSwgeyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmICghcHJv
dG9jb2xJc0luSFRUUEZhbWlseShyZXF1ZXN0LT51cmwoKSkpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCB1cmwgaXMgbm90IEhUVFAv
SFRUUFMiKSB9OworCisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
dm9pZCBDYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWY8RmV0
Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7CisgICAgcmVxdWVzdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShpbmZvcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaW5mbyA6IGluZm9zKSB7CisgICAgICAg
IGJvb2wgaWdub3JlTWV0aG9kID0gZmFsc2U7CisgICAgICAgIGF1dG8gcmVxdWVzdE9yRXhjZXB0
aW9uID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mbyksIGlnbm9yZU1ldGhvZCk7CisgICAg
ICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYg
KFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXF1ZXN0cy51
bmNoZWNrZWRBcHBlbmQocmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KyAgICB9CisKKyAgICBhdXRvIHRhc2tIYW5kbGVyID0gYWRvcHRSZWYoKm5ldyBGZXRjaFRhc2tz
SGFuZGxlcihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8VmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlJlY29yZD4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlcXVlc3QgPSBGZXRj
aFJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8p
LCB7IH0pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICB9KTsKKyAgICB9
KSk7CisKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAgICAgICBhdXRv
JiByZXF1ZXN0UmVmZXJlbmNlID0gcmVxdWVzdC5nZXQoKTsKKyAgICAgICAgRmV0Y2hSZXNwb25z
ZTo6ZmV0Y2goKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdFJlZmVyZW5jZSwgW3Ro
aXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCB0YXNrSGFuZGxlciA9IHRhc2tIYW5kbGVy
LmNvcHlSZWYoKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKworICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+ZXJyb3IocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBhdXRvJiByZXNwb25zZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAg
ICAgICAgICAgaWYgKCFyZXNwb25zZS5vaygpKSB7CisgICAgICAgICAgICAgICAgdGFza0hhbmRs
ZXItPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBp
cyBub3QgT0siKSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChoYXNSZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUocmVzcG9uc2Up
KSB7CisgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBoYXMgYSAnKicgVmFyeSBoZWFkZXIgdmFsdWUi
KSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChyZXNwb25zZS5zdGF0dXMoKSA9PSAyMDYpIHsKKyAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+ZXJyb3IoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlc3Bv
bnNlIGlzIGEgMjA2IHBhcnRpYWwiKSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIENhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IHRhc2tIYW5kbGVyLT5yZWNvcmRzKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNo
ZU1hdGNoKHJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLCByZWNvcmQucmVxdWVzdCwgcmVjb3Jk
LnJlc3BvbnNlLCBvcHRpb25zKSkgeworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+
ZXJyb3IoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiYWRkQWxs
IGNhbm5vdCBzdG9yZSBzZXZlcmFsIG1hdGNoaW5nIHJlcXVlc3RzIil9KTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9D
b25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CisKKyAg
ICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5V2hlbkxvYWRlZChbdGFza0hhbmRsZXIgPSBX
VEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb25dKEV4Y2VwdGlvbk9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHRh
c2tIYW5kbGVyLT5pc0RvbmUoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+ZXJyb3IocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gdmFsdWUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24s
IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwog
ICAgIH0KK30KKwordm9pZCBDYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
Cit7CisgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkocmVxdWVzdC0+dXJs
KCkpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVND
SUlMaXRlcmFsKCJSZXF1ZXN0IHVybCBpcyBub3QgSFRUUC9IVFRQUyIpIH0pOworICAgIGJvb2wg
aWdub3JlTWV0aG9kID0gZmFsc2U7CisgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRpb24gPSByZXF1
ZXN0RnJvbUluZm8oV1RGTW92ZShpbmZvKSwgaWdub3JlTWV0aG9kKTsKKyAgICBpZiAocmVxdWVz
dE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KHJl
cXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGF1dG8gcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LCB3ZSBzaG91bGQg
YmUgYWJsZSB0byBzcGxpdCBhbmQgdHJpbSB3aGl0ZXNwYWNlcyBhdCB0aGUgc2FtZSB0aW1lLgot
ICAgIGF1dG8gdmFyeVZhbHVlID0gcmVzcG9uc2UtPmhlYWRlcnMoKS5pbnRlcm5hbEhlYWRlcnMo
KS5nZXQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OlZhcnkpOwotICAgIFZlY3RvcjxTdHJpbmc+
IHZhcnlIZWFkZXJOYW1lczsKLSAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBmYWxzZSwgdmFyeUhl
YWRlck5hbWVzKTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiB2YXJ5SGVhZGVyTmFtZXMpIHsKLSAg
ICAgICAgaWYgKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhuYW1lKSA9PSAiKiIp
IHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVND
SUlMaXRlcmFsKCJSZXNwb25zZSBoYXMgYSAnKicgVmFyeSBoZWFkZXIgdmFsdWUiKSB9KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGlmIChoYXNSZXNwb25zZVZhcnlTdGFy
SGVhZGVyVmFsdWUocmVzcG9uc2UuZ2V0KCkpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBoYXMgYSAnKicgVmFy
eSBoZWFkZXIgdmFsdWUiKSB9KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChy
ZXNwb25zZS0+c3RhdHVzKCkgPT0gMjA2KSB7CkBAIC0xNzksNyArMzA2LDcgQEAgdm9pZCBDYWNo
ZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2Us
IERPTVByb21pc2VEZWYKIAogICAgIGlmIChyZXNwb25zZS0+aXNMb2FkaW5nKCkpIHsKICAgICAg
ICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJv
ZHlXaGVuTG9hZGVkKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IHJlcXVl
c3QucmVsZWFzZU5vbk51bGwoKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgdGhpc10o
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5V2hlbkxvYWRlZChbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUo
cmVzcG9uc2UpLCB0aGlzXShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgIGVsc2UgewpAQCAtMTk1LDQ2ICszMjIsNDAgQEAgdm9pZCBDYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2VEZWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJhdGNoUHV0T3BlcmF0aW9u
KCpyZXF1ZXN0LCByZXNwb25zZS5nZXQoKSwgcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCksIFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgp
LCByZXNwb25zZS0+Y29uc3VtZUJvZHkoKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShF
eGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21pc2Uuc2V0
dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGU6OnJlbW92ZShS
ZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsKLSAgICBSZWZQdHI8RmV0Y2hSZXF1
ZXN0PiByZXF1ZXN0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGZXRj
aFJlcXVlc3Q+PihpbmZvKSkgewotICAgICAgICByZXF1ZXN0ID0gV1RGOjpnZXQ8UmVmUHRyPEZl
dGNoUmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgIGlmIChyZXF1ZXN0
LT5tZXRob2QoKSAhPSAiR0VUIiAmJiAhb3B0aW9ucy5pZ25vcmVNZXRob2QpIHsKLSAgICAgICAg
ICAgIHByb21pc2UucmVzb2x2ZShmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlcXVlc3QgPSBGZXRjaFJl
cXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8pLCB7
IH0pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXF1ZXN0T3JFeGNl
cHRpb24gPSByZXF1ZXN0RnJvbUluZm8oV1RGTW92ZShpbmZvKSwgb3B0aW9ucy5pZ25vcmVNZXRo
b2QpOworICAgIGlmIChyZXF1ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGJhdGNoRGVsZXRlT3BlcmF0aW9uKCpyZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPGJvb2w+JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICBiYXRjaERlbGV0ZU9wZXJhdGlvbihyZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZVJl
dHVyblZhbHVlKCksIFdURk1vdmUob3B0aW9ucyksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0oRXhjZXB0aW9uT3I8Ym9vbD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBwcm9taXNl
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjprZXlz
KHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBv
cHRpb25zLCBLZXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CisgICAgaWYgKFVOTElLRUxZKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RmV0
Y2hSZXF1ZXN0PiByZXF1ZXN0OwogICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvLnZhbHVlKCkpKSB7Ci0g
ICAgICAgICAgICByZXF1ZXN0ID0gV1RGOjpnZXQ8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8u
dmFsdWUoKSkucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5tZXRo
b2QoKSAhPSAiR0VUIiAmJiAhb3B0aW9ucy5pZ25vcmVNZXRob2QpIHsKLSAgICAgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUoVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiB7IH0pOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvLnZhbHVlKCkpLCB7IH0p
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9
IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8udmFsdWUoKSksIG9wdGlvbnMuaWdub3JlTWV0
aG9kKTsKKyAgICAgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4geyB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICByZXF1ZXN0ID0gcmVx
dWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KIAogICAgIGlmICgh
cmVxdWVzdCkgewpAQCAtMzA2LDcgKzQyNyw3IEBAIHZvaWQgQ2FjaGU6OmJhdGNoRGVsZXRlT3Bl
cmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmCiAg
ICAgfSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3Jk
IHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUmVz
cG9uc2UmIHJlc3BvbnNlLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmJiBy
ZXNwb25zZUJvZHkpCitDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQgdG9Db25uZWN0aW9u
UmVjb3JkKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hSZXNwb25zZSYgcmVzcG9u
c2UsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSYmIHJlc3BvbnNlQm9keSkK
IHsKICAgICAvLyBGSVhNRTogQWRkIGEgc2V0SFRUUEhlYWRlckZpZWxkcyBvbiBSZXNvdXJjZVJl
c3BvbnNlQmFzZS4KICAgICBSZXNvdXJjZVJlc3BvbnNlIGNhY2hlZFJlc3BvbnNlID0gcmVzcG9u
c2UucmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtMzMwLDYgKzQ1MSwxMSBAQCB2b2lkIENhY2hlOjpi
YXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUmVzcG9u
c2UmIHJlc3BvbgogICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJl
Y29yZHM7CiAgICAgcmVjb3Jkcy5hcHBlbmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QsIHJl
c3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlQm9keSkpKTsKIAorICAgIGJhdGNoUHV0T3BlcmF0aW9u
KFdURk1vdmUocmVjb3JkcyksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBDYWNoZTo6
YmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4m
JiByZWNvcmRzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY2Fs
bGJhY2spCit7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIG1fY29ubmVjdGlv
bi0+YmF0Y2hQdXRPcGVyYXRpb24obV9pZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oVmVjdG9yPHVpbnQ2NF90PiYmLCBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoIW1faXNTdG9w
cGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oCmluZGV4IDNjYTA4MmU4MjU3YjVl
M2Q1MTVmMDNiYjE1NGNiNWY1MTk4MTBkYjIuLmVmYjM0YmJjMWU5ZjA2NjVlZjgxNDg5NDA4MjU4
NWQ0ZGMxYTNjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKQEAgLTYyLDYg
KzYyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDYWNoZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgU3RyaW5nJiYgbmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgUmVmPENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24+JiYpOwogCisgICAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IHJl
cXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmLCBib29sIGlnbm9yZU1ldGhvZCk7CisKICAgICAv
LyBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC03Miw2ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBxdWVyeUNhY2hlKFJlZjxGZXRjaFJlcXVlc3Q+JiYsIENhY2hlUXVl
cnlPcHRpb25zJiYsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdl
UmVjb3JkPiYpPiYmKTsKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNo
UmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRp
b25Pcjxib29sPiYmKT4mJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRj
aFJlcXVlc3QmLCBGZXRjaFJlc3BvbnNlJiwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9u
c2VCb2R5JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7Cisg
ICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
UmVjb3JkPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpOwog
CiAgICAgdm9pZCB1cGRhdGVSZWNvcmRzKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZWNvcmQ+JiYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBmZmQzOTNkYjVi
ZTkwZDAyMTdhNjFkY2E2NjVmY2E3NDU2ZjcyNmRiLi42ODhhYzgwNDlmYjE0MjNhNjZkMmRjZWNm
ZjMxYmJlMmRjYzhjZjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxNyBAQAogMjAxNy0wOC0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgW0NhY2hlIEFQSV0gQWRkIHN1cHBvcnQgZm9yIENhY2hlLmFkZC9hZGRBbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1hZGQu
aHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNo
ZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIv
Y2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQ6CisKKzIwMTctMDgtMjEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFtDYWNoZSBBUEldIEFkZCBzdXBw
b3J0IGZvciBDYWNoZVN0b3JhZ2UubWF0Y2gKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTc0NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdl
L3dpbmRvdy9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93
aW5kb3cvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMThmYzMyMmE2ZjMwMGI4
ZDYxYjQ4OTdjZDQyMjY4ZWE4MzJiNTNmLi5jZjc0Y2ZhZDZkZGYyZWU0ZDEyZjdmNmE1Nzc0NWVm
ZTYzOWI5OTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1hZGQu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLWFk
ZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMjAgQEAKIAogUEFTUyBDYWNoZS5hZGQg
Y2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggcmVs
YXRpdmUgVVJMIHNwZWNpZmllZCBhcyBhIHN0cmluZyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxl
bWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm9uLUhUVFAvSFRUUFMgVVJMIGFz
c2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yIG5vbi1I
VFRQL0hUVFBTIFVSTHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcg
b2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRl
ZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwg
Q2FjaGUuYWRkIGNhbGxlZCB3aXRoIFJlcXVlc3Qgb2JqZWN0IHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJlcXVlc3QgYXNz
ZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3Igbm9uLUdF
VCByZXF1ZXN0cy4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJy
b3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNo
ZS5hZGQgY2FsbGVkIHR3aWNlIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3QgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVk
RXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB3aXRo
IG51bGwgYm9keSAobm90IGNvbnN1bWVkKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVk
IgotRkFJTCBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgYXNzZXJ0X3Rocm93czogQ2FjaGUu
YWRkIHNob3VsZCByZWplY3Qgb24gcGFydGlhbCByZXNwb25zZSBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBs
ZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9y
IiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNwb25zZSBhc3Nl
cnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvciBpZiBh
bnkgcmVxdWVzdCBmYWlscyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3
IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0
ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlM
IENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCByZXN1bHRzIGluIGEgc3RhdHVzIG9mIDQwNCBh
c3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHJlamVjdCBpZiByZXNwb25zZSBpcyAhb2sg
ZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3Rl
ZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgd2l0aCBy
ZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgYXNzZXJ0X3Rocm93czogQ2Fj
aGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVzcG9uc2UgaXMgIW9rIGZ1bmN0aW9uICJmdW5jdGlv
biAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGlt
cGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJy
b3IiICgiVHlwZUVycm9yIikKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIHJlbGF0aXZlIFVS
TCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBub24t
SFRUUC9IVFRQUyBVUkwgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1ZXN0IG9iamVj
dCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFBPU1QgcmVxdWVzdCAKK1BBU1MgQ2FjaGUu
YWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IAorUEFTUyBDYWNo
ZS5hZGQgd2l0aCByZXF1ZXN0IHdpdGggbnVsbCBib2R5IChub3QgY29uc3VtZWQpIAorUEFTUyBD
YWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIDIwNiBy
ZXNwb25zZSAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3VsdHMgaW4gYSBz
dGF0dXMgb2YgNDA0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBp
biBhIHN0YXR1cyBvZiA1MDAgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIG5vIGFyZ3VtZW50cyAK
IFBBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2YgdmFsaWQgYW5kIHVuZGVmaW5lZCBhcmd1
bWVudHMgCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFycmF5IHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwg
YXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFk
ZEFsbCB3aXRoIFJlcXVlc3QgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50
ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcgYW5kIGZhaWxp
bmcgcmVxdWVzdHMgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCByZWplY3Qgd2l0
aCBUeXBlRXJyb3IgaWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
dGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50
ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJU
eXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgY2FsbGVkIHdpdGggdGhlIHNhbWUgUmVxdWVz
dCBvYmplY3Qgc3BlY2lmaWVkIHR3aWNlIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZEFsbCBzaG91
bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIHNhbWUgcmVxdWVzdCBpcyBhZGRlZCB0
d2ljZS4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5v
dFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0
aW9uIEludmFsaWRTdGF0ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gOSwgZXhw
ZWN0ZWQgMTEKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYW4gZW1wdHkgYXJyYXkgCitQQVNTIENh
Y2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIAorUEFTUyBDYWNoZS5hZGRBbGwg
d2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2Yg
c3VjY2VlZGluZyBhbmQgZmFpbGluZyByZXF1ZXN0cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIGNhbGxl
ZCB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVj
dGVkLnR4dAppbmRleCA3MDkxMTJiNTg5MmRmODcxYjBkMTU2YWFmMjNjNmZiMTQxOTM5ZTUxLi40
ZmNmNTQzYjc0ODFhM2U1Zjk0Njc0ZjQ1YzljMWViMmU3OTc5MjQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9j
YWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSwxMSArMSwxMSBAQAogCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIAotRkFJTCBDYWNo
ZVN0b3JhZ2UuZGVsZXRlIGRvb21zLCBidXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUg
ZG9vbXMsIGJ1dCBkb2VzIG5vdCBkZWxldGUgaW1tZWRpYXRlbHkgCiBQQVNTIENhY2hlU3RvcmFn
ZS5vcGVuIHdpdGggYW4gZW1wdHkgbmFtZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLm9wZW4gd2l0aCBu
byBhcmd1bWVudHMgCiBQQVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0aCBleGlzdGluZyBjYWNoZSAK
IFBBU1MgQ2FjaGVTdG9yYWdlLmhhcyB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAotRkFJTCBDYWNo
ZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0aW5nIGNhY2hlIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1w
bGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQ
QVNTIENhY2hlU3RvcmFnZS5kZWxldGUgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVT
dG9yYWdlLmRlbGV0ZSB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAogUEFTUyBDYWNoZVN0b3JhZ2Ug
bmFtZXMgYXJlIERPTVN0cmluZ3Mgbm90IFVTVlN0cmluZ3MgCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNo
ZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUt
c3RvcmFnZS93b3JrZXIvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMThmYzMy
MmE2ZjMwMGI4ZDYxYjQ4OTdjZDQyMjY4ZWE4MzJiNTNmLi5jZjc0Y2ZhZDZkZGYyZWU0ZDEyZjdm
NmE1Nzc0NWVmZTYzOWI5OTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9j
YWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2Vy
L2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMjAgQEAKIAogUEFTUyBD
YWNoZS5hZGQgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGQgY2FsbGVk
IHdpdGggcmVsYXRpdmUgVVJMIHNwZWNpZmllZCBhcyBhIHN0cmluZyBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
Tm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggbm9uLUhUVFAvSFRU
UFMgVVJMIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Ig
Zm9yIG5vbi1IVFRQL0hUVFBTIFVSTHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5v
dFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9y
IikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFJlcXVlc3Qgb2JqZWN0IHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJl
cXVlc3QgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBm
b3Igbm9uLUdFVCByZXF1ZXN0cy4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQot
RkFJTCBDYWNoZS5hZGQgY2FsbGVkIHR3aWNlIHdpdGggdGhlIHNhbWUgUmVxdWVzdCBvYmplY3Qg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90
U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggcmVx
dWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1bWVkKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGlt
cGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgYXNzZXJ0X3Rocm93
czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3Qgb24gcGFydGlhbCByZXNwb25zZSBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6
IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAi
VHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIDIwNiByZXNw
b25zZSBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVF
cnJvciBpZiBhbnkgcmVxdWVzdCBmYWlscyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBl
IH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJO
b3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJv
ciIpCi1GQUlMIENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCByZXN1bHRzIGluIGEgc3RhdHVz
IG9mIDQwNCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHJlamVjdCBpZiByZXNwb25z
ZSBpcyAhb2sgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3Ii
KSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5h
ZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgYXNzZXJ0X3Ro
cm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVzcG9uc2UgaXMgIW9rIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0
ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIHJl
bGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQg
d2l0aCBub24tSFRUUC9IVFRQUyBVUkwgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1
ZXN0IG9iamVjdCAKK1BBU1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIFBPU1QgcmVxdWVzdCAKK1BB
U1MgQ2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IAor
UEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHdpdGggbnVsbCBib2R5IChub3QgY29uc3VtZWQp
IAorUEFTUyBDYWNoZS5hZGQgd2l0aCAyMDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZEFsbCB3
aXRoIDIwNiByZXNwb25zZSAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3Vs
dHMgaW4gYSBzdGF0dXMgb2YgNDA0IAorUEFTUyBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQg
cmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA1MDAgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIG5vIGFy
Z3VtZW50cyAKIFBBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYSBtaXggb2YgdmFsaWQgYW5kIHVuZGVm
aW5lZCBhcmd1bWVudHMgCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFycmF5IHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIHN0
cmluZyBVUkwgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlM
IENhY2hlLmFkZEFsbCB3aXRoIFJlcXVlc3QgYXJndW1lbnRzIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcg
YW5kIGZhaWxpbmcgcmVxdWVzdHMgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCBy
ZWplY3Qgd2l0aCBUeXBlRXJyb3IgaWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVF
cnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgY2FsbGVkIHdpdGggdGhlIHNh
bWUgUmVxdWVzdCBvYmplY3Qgc3BlY2lmaWVkIHR3aWNlIGFzc2VydF90aHJvd3M6IENhY2hlLmFk
ZEFsbCBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIHNhbWUgcmVxdWVzdCBp
cyBhZGRlZCB0d2ljZS4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiIHRoYXQgaXMgbm90IGEg
RE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwg
dG8gOSwgZXhwZWN0ZWQgMTEKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGggYW4gZW1wdHkgYXJyYXkg
CitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIHN0cmluZyBVUkwgYXJndW1lbnRzIAorUEFTUyBDYWNo
ZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRkQWxsIHdpdGgg
YSBtaXggb2Ygc3VjY2VlZGluZyBhbmQgZmFpbGluZyByZXF1ZXN0cyAKK1BBU1MgQ2FjaGUuYWRk
QWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtcHV0Lmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggMDljZDEyZTY1NDZmYzBlNTYxYzlkMjZjYTA5OTVhZDAwZTI0MGZmYi4u
OTQ0OTI2MjVlMmZhNmIzZmUyYTdjODMzNWRiNDIzYTE0NWRlZmIyNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
Y2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtcHV0Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0x
LDYgKzEsNiBAQAogCiBQQVNTIENhY2hlLnB1dCBjYWxsZWQgd2l0aCBzaW1wbGUgUmVxdWVzdCBh
bmQgUmVzcG9uc2UgCi1QQVNTIENhY2hlLnB1dCBjYWxsZWQgd2l0aCBSZXF1ZXN0IGFuZCBSZXNw
b25zZSBmcm9tIGZldGNoKCkgCitGQUlMIENhY2hlLnB1dCBjYWxsZWQgd2l0aCBSZXF1ZXN0IGFu
ZCBSZXNwb25zZSBmcm9tIGZldGNoKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IENhY2hpbmcgYSBSZXNwb25z
ZSB3aXRoIGRhdGEgc3RvcmVkIGluIGEgUmVhZGFibGVTdHJlYW0gaXMgbm90IHlldCBzdXBwb3J0
ZWQiCiBQQVNTIENhY2hlLnB1dCB3aXRoIFJlcXVlc3Qgd2l0aG91dCBhIGJvZHkgCiBQQVNTIENh
Y2hlLnB1dCB3aXRoIFJlc3BvbnNlIHdpdGhvdXQgYSBib2R5IAogUEFTUyBDYWNoZS5wdXQgd2l0
aCBhIFJlc3BvbnNlIGNvbnRhaW5pbmcgYW4gZW1wdHkgVVJMIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2Fj
aGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9j
YWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCA3MDkxMTJiNTg5MmRmODcxYjBkMTU2YWFmMjNjNmZiMTQxOTM5ZTUxLi40ZmNmNTQzYjc0ODFh
M2U1Zjk0Njc0ZjQ1YzljMWViMmU3OTc5MjQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdl
L3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1z
dG9yYWdlL3dvcmtlci9jYWNoZS1zdG9yYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMSAr
MSwxMSBAQAogCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIAotRkFJTCBDYWNoZVN0b3JhZ2UuZGVs
ZXRlIGRvb21zLCBidXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBOb3QgaW1wbGVtZW50ZWQiCitQQVNTIENhY2hlU3RvcmFnZS5kZWxldGUgZG9vbXMsIGJ1dCBk
b2VzIG5vdCBkZWxldGUgaW1tZWRpYXRlbHkgCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGgg
YW4gZW1wdHkgbmFtZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLm9wZW4gd2l0aCBubyBhcmd1bWVudHMg
CiBQQVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVT
dG9yYWdlLmhhcyB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAotRkFJTCBDYWNoZVN0b3JhZ2Uub3Bl
biB3aXRoIGV4aXN0aW5nIGNhY2hlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCitQ
QVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENhY2hlU3Rv
cmFnZS5kZWxldGUgd2l0aCBleGlzdGluZyBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlLmRlbGV0
ZSB3aXRoIG5vbmV4aXN0ZW50IGNhY2hlIAogUEFTUyBDYWNoZVN0b3JhZ2UgbmFtZXMgYXJlIERP
TVN0cmluZ3Mgbm90IFVTVlN0cmluZ3MgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318715</attachid>
            <date>2017-08-21 18:22:23 -0700</date>
            <delta_ts>2017-08-21 19:03:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175677-20170821182222.patch</filename>
            <type>text/plain</type>
            <size>33659</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI4ZmFhNWU2Y2I2ODJi
YWU5NDIzNWYzYjRjNDEwMGI5ZDViOWE2Ni4uMmU3NDBkODA0M2YyZjIwZDc3ZTkzZjBkMGVmMWRm
MjhmOWY0ZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE3LTA4LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBD
aHJpc3RlbnNlbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAg
ICAgQ2FjaGUuYWRkQWxsIGltcGxlbWVudGF0aW9uIGlzIHRoZW4gYXMgZm9sbG93OgorICAgICAg
ICAtIEZldGNoIHRoZSByZXNvdXJjZXMgaW4gcGFyYWxsZWwuCisgICAgICAgIC0gV2FpdCBmb3Ig
YWxsIHRoZW0gdG8gY29tcGxldGUgdXNpbmcgRmV0Y2hUYXNrQ291bnRlci4KKyAgICAgICAgLSBJ
ZiBhbiBlcnJvciBoYXBwZW5zIGluIGFueSBsb2FkIG9yIGlmIHRoZSByZXNwb25zZSBpcyBub3Qg
YXMgZXhwZWN0ZWQgZm9yIENhY2hlIEFQSSwgcmVqZWN0IHRoZSBwcm9taXNlLgorICAgICAgICAt
IENhbGwgdGhlIGJhdGNoIHB1dCBvcGVyYXRpb24gd2l0aCBhbGwgcmVjZWl2ZWQgRmV0Y2hSZXNw
b25zZSBvYmplY3RzLgorCisgICAgICAgIEZldGNoVGFza0NvdW50ZXIgaXMgcmVzcG9uc2libGUg
dG8gd2FpdCBmb3IgZWFjaCByZXNwb25zZSB0byBhcnJpdmUuCisgICAgICAgIEl0IHRoZW4gY2hl
Y2tzIHdoZXRoZXIgdGhlIHJlc3BvbnNlIGlzIGZpbmUsCisgICAgICAgIElmIG5vdCwgdGhlIGFk
ZEFsbCBwcm9taXNlIGlzIHJlamVjdGVkLgorICAgICAgICBPdGhlcndpc2UsIGl0IHdhaXRzIGZv
ciB0aGUgYm9keSB0byBiZSByZWNlaXZlZC4KKworICAgICAgICBJbnRyb2R1Y2luZyBhIGhlbHBl
ciByb3V0aW5lIHRvIGNyZWF0ZSBhIEZldGNoUmVxdWVzdCBmcm9tIGEgZ2l2ZW4gUmVxdWVzdElu
Zm8uCisgICAgICAgIEludHJvZHVjaW5nIGEgaGVscGVyIHJvdXRpbmUgdG8gY2hlY2sgZm9yIFZh
cnkgSGVhZGVyICcqJyB2YWx1ZSBpbiByZXNwb25zZSBoZWFkZXJzLgorCisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZG9NYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5
Q2FjaGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXNSZXNwb25zZVZhcnlTdGFySGVhZGVy
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6RmV0Y2hUYXNrQ291
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tDb3VudGVyOjp+RmV0Y2hUYXNrQ291
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tDb3VudGVyOjphZGRSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hUYXNrQ291bnRlcjo6aXNEb25lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoVGFza0NvdW50ZXI6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6cmVxdWVzdEZyb21JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjprZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvQ29ubmVjdGlvblJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6
YmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGUuaDoKKwor
MjAxNy0wOC0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAg
W0NhY2hlIEFQSV0gQWRkIHN1cHBvcnQgZm9yIENhY2hlU3RvcmFnZS5tYXRjaAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzQ3CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKaW5kZXggMGNmYTZjZWM5ZGU4NGFlNTJjZWFhNTk0
NDBmZGE0ZmVkNzI3NWE5My4uNGExMzM0YjRlNmNjMzc1MGIwNzBkYjlhODI5ZjNlYTIwYmRjZWY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKQEAgLTM2LDYgKzM2LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmLCBGZXRjaFJl
c3BvbnNlJiwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYpOworCiBDYWNo
ZTo6Q2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbmFtZSwg
dWludDY0X3QgaWRlbnRpZmllciwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fbmFtZShXVEZN
b3ZlKG5hbWUpKQpAQCAtNjIsMjAgKzY0LDE3IEBAIHZvaWQgQ2FjaGU6Om1hdGNoKFJlcXVlc3RJ
bmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQCiAK
IHZvaWQgQ2FjaGU6OmRvTWF0Y2goUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIE1hdGNoQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RmV0
Y2hSZXF1ZXN0PiByZXF1ZXN0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0
cjxGZXRjaFJlcXVlc3Q+PihpbmZvKSkgewotICAgICAgICByZXF1ZXN0ID0gV1RGOjpnZXQ8UmVm
UHRyPEZldGNoUmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgIGlmIChy
ZXF1ZXN0LT5tZXRob2QoKSAhPSAiR0VUIiAmJiAhb3B0aW9ucy5pZ25vcmVNZXRob2QpIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXF1ZXN0ID0gRmV0Y2hS
ZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvKSwg
eyB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVxdWVzdE9yRXhj
ZXB0aW9uID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mbyksIG9wdGlvbnMuaWdub3JlTWV0
aG9kKTsKKyAgICBpZiAocmVxdWVzdE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7CisgICAg
ICAgIGNhbGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGF1dG8g
cmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAg
IHF1ZXJ5Q2FjaGUocmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJl
Y29yZD4mIHJlY29yZHMpIG11dGFibGUgeworICAgIHF1ZXJ5Q2FjaGUocmVxdWVzdC5nZXQoKSwg
V1RGTW92ZShvcHRpb25zKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IFZl
Y3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+JiByZWNvcmRzKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KHJlY29yZHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTg2LDE5ICs4NSwxNyBAQCB2b2lkIENhY2hlOjpkb01hdGNo
KFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBNYXRjaENh
bGxiYQogCiB2b2lkIENhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgTWF0Y2hBbGxQcm9taXNlJiYgcHJv
bWlzZSkKIHsKKyAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAg
aWYgKGluZm8pIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZl
dGNoUmVxdWVzdD4+KGluZm8udmFsdWUoKSkpIHsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBXVEY6
OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5mby52YWx1ZSgpKS5yZWxlYXNlTm9uTnVsbCgp
OwotICAgICAgICAgICAgaWYgKHJlcXVlc3QtPm1ldGhvZCgpICE9ICJHRVQiICYmICFvcHRpb25z
Lmlnbm9yZU1ldGhvZCkgewotICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh7IH0pOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShpbmZvLnZhbHVlKCkp
LCB7IH0pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBhdXRvIHJlcXVlc3RPckV4Y2Vw
dGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8udmFsdWUoKSksIG9wdGlvbnMuaWdu
b3JlTWV0aG9kKTsKKyAgICAgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHsgfSk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAoIXJlcXVlc3QpIHsKQEAgLTEyMCw0
NSArMTE3LDE3NSBAQCB2b2lkIENhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJ
bmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aQogICAgIH0pOwogfQogCi12b2lk
IENhY2hlOjphZGQoUmVxdWVzdEluZm8mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSkKK3ZvaWQgQ2FjaGU6OmFkZChSZXF1ZXN0SW5mbyYmIGluZm8sIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIil9KTsKKyAg
ICBhZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiB7IFdURk1vdmUoaW5mbykgfSwgV1RGTW92ZShw
cm9taXNlKSk7CiB9CiAKLXZvaWQgQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCitzdGF0aWMgaW5saW5lIGJvb2wg
aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCBBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCIpfSk7CisgICAgYXV0byB2YXJ5VmFsdWUg
PSByZXNwb25zZS5oZWFkZXJzKCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lOjpWYXJ5KTsKKyAgICBib29sIGhhc1N0YXIgPSBmYWxzZTsKKyAgICB2YXJ5VmFs
dWUuc3BsaXQoJywnLCBmYWxzZSwgWyZdKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICBpZiAo
IWhhc1N0YXIgJiYgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSA9PSAiKiIpCisgICAgICAgICAgICBoYXNTdGFyID0gdHJ1ZTsK
KyAgICB9KTsKKyAgICByZXR1cm4gaGFzU3RhcjsKIH0KIAotdm9pZCBDYWNoZTo6cHV0KFJlcXVl
c3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCitjbGFzcyBGZXRjaFRhc2tzSGFuZGxlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZldGNoVGFza3NIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
RmV0Y2hUYXNrc0hhbmRsZXIoRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPj4mJik+JiYgY2FsbGJhY2spCisgICAgICAgIDogbV9j
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgfkZldGNoVGFz
a3NIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICAgICAg
bV9jYWxsYmFjayhXVEZNb3ZlKG1fcmVjb3JkcykpOworICAgIH0KKworICAgIGNvbnN0IFZlY3Rv
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiByZWNvcmRzKCkgY29uc3QgeyByZXR1
cm4gbV9yZWNvcmRzOyB9CisKKyAgICBzaXplX3QgYWRkUmVjb3JkKENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OlJlY29yZCYmIHJlY29yZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNEb25lKCkp
OworICAgICAgICBtX3JlY29yZHMuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7CisgICAgICAgIHJl
dHVybiBtX3JlY29yZHMuc2l6ZSgpIC0gMTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFJlc3BvbnNl
Qm9keShzaXplX3QgcG9zaXRpb24sIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghaXNEb25lKCkpOworICAgICAgICBtX3JlY29yZHNbcG9zaXRpb25dLnJl
c3BvbnNlQm9keSA9IFdURk1vdmUoZGF0YSk7CisgICAgfQorCisgICAgYm9vbCBpc0RvbmUoKSBj
b25zdCB7IHJldHVybiAhbV9jYWxsYmFjazsgfQorCisgICAgdm9pZCBlcnJvcihFeGNlcHRpb24m
JiBleGNlcHRpb24pCisgICAgeworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUo
bV9jYWxsYmFjaykpCisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVj
b3JkPiBtX3JlY29yZHM7CisgICAgRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPj4mJik+IG1fY2FsbGJhY2s7Cit9OworCitFeGNl
cHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gQ2FjaGU6OnJlcXVlc3RGcm9tSW5mbyhSZXF1ZXN0
SW5mbyYmIGluZm8sIGJvb2wgaWdub3JlTWV0aG9kKQogewogICAgIFJlZlB0cjxGZXRjaFJlcXVl
c3Q+IHJlcXVlc3Q7CiAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZldGNo
UmVxdWVzdD4+KGluZm8pKSB7CiAgICAgICAgIHJlcXVlc3QgPSBXVEY6OmdldDxSZWZQdHI8RmV0
Y2hSZXF1ZXN0Pj4oaW5mbykucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgaWYgKHJlcXVlc3Qt
Pm1ldGhvZCgpICE9ICJHRVQiKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdCBtZXRob2QgaXMgbm90IEdFVCIp
IH0pOworICAgICAgICBpZiAocmVxdWVzdC0+bWV0aG9kKCkgIT0gIkdFVCIgJiYgIWlnbm9yZU1l
dGhvZCkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiUmVxdWVzdCBtZXRob2QgaXMgbm90IEdFVCIpIH07CisgICAgfSBlbHNlCisgICAgICAg
IHJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKGluZm8pLCB7IH0pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgaWYgKCFw
cm90b2NvbElzSW5IVFRQRmFtaWx5KHJlcXVlc3QtPnVybCgpKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0IHVybCBpcyBub3QgSFRU
UC9IVFRQUyIpIH07CisKKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIENhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChVTkxJS0VMWSghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZjxG
ZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsKKyAgICByZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGluZm9zLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBpbmZvIDogaW5mb3MpIHsKKyAgICAg
ICAgYm9vbCBpZ25vcmVNZXRob2QgPSBmYWxzZTsKKyAgICAgICAgYXV0byByZXF1ZXN0T3JFeGNl
cHRpb24gPSByZXF1ZXN0RnJvbUluZm8oV1RGTW92ZShpbmZvKSwgaWdub3JlTWV0aG9kKTsKKyAg
ICAgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3QocmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBp
ZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJlcXVlc3Rz
LnVuY2hlY2tlZEFwcGVuZChyZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkp
OworICAgIH0KKworICAgIGF1dG8gdGFza0hhbmRsZXIgPSBhZG9wdFJlZigqbmV3IEZldGNoVGFz
a3NIYW5kbGVyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25PcjxWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6UmVjb3JkPj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVxdWVzdCA9IEZl
dGNoUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5m
byksIHsgfSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgYmF0Y2hQ
dXRPcGVyYXRpb24ocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgIH0pOworICAg
IH0pKTsKKworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgICAgIGF1
dG8mIHJlcXVlc3RSZWZlcmVuY2UgPSByZXF1ZXN0LmdldCgpOworICAgICAgICBGZXRjaFJlc3Bv
bnNlOjpmZXRjaCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0UmVmZXJlbmNlLCBb
dGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHRhc2tIYW5kbGVyID0gdGFza0hhbmRs
ZXIuY29weVJlZigpXShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJiByZXN1bHQpIG11dGFi
bGUgeworCisgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
eworICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5lcnJvcihyZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGF1dG8mIHJlc3BvbnNlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisg
ICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKCkpIHsKKyAgICAgICAgICAgICAgICB0YXNrSGFu
ZGxlci0+ZXJyb3IoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNl
IGlzIG5vdCBPSyIpIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZShyZXNwb25z
ZSkpIHsKKyAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+ZXJyb3IoRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNlIGhhcyBhICcqJyBWYXJ5IGhlYWRlciB2YWx1
ZSIpIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cygpID09IDIwNikgeworICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5lcnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVz
cG9uc2UgaXMgYSAyMDYgcGFydGlhbCIpIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9uczsKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkIDogdGFza0hhbmRsZXItPnJlY29yZHMo
KSkgeworICAgICAgICAgICAgICAgIGlmIChDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpxdWVyeUNh
Y2hlTWF0Y2gocmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlY29yZC5yZXF1ZXN0LCByZWNv
cmQucmVzcG9uc2UsIG9wdGlvbnMpKSB7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5lcnJvcihFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJhZGRB
bGwgY2Fubm90IHN0b3JlIHNldmVyYWwgbWF0Y2hpbmcgcmVxdWVzdHMiKX0pOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0
b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKKwor
ICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlXaGVuTG9hZGVkKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbl0oRXhjZXB0aW9uT3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
dGFza0hhbmRsZXItPmlzRG9uZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRhc2tIYW5kbGVyLT5lcnJvcihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CiAgICAgfQorfQorCit2b2lkIENhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghcHJvdG9jb2xJc0luSFRUUEZhbWlseShyZXF1ZXN0LT51
cmwoKSkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBB
U0NJSUxpdGVyYWwoIlJlcXVlc3QgdXJsIGlzIG5vdCBIVFRQL0hUVFBTIikgfSk7CisgICAgYm9v
bCBpZ25vcmVNZXRob2QgPSBmYWxzZTsKKyAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IHJl
cXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8pLCBpZ25vcmVNZXRob2QpOworICAgIGlmIChyZXF1
ZXN0T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
cmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgYXV0byByZXF1ZXN0ID0gcmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQsIHdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHNwbGl0IGFuZCB0cmltIHdoaXRlc3BhY2VzIGF0IHRoZSBzYW1lIHRpbWUu
Ci0gICAgYXV0byB2YXJ5VmFsdWUgPSByZXNwb25zZS0+aGVhZGVycygpLmludGVybmFsSGVhZGVy
cygpLmdldChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6VmFyeSk7Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gdmFyeUhlYWRlck5hbWVzOwotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCB2YXJ5
SGVhZGVyTmFtZXMpOwotICAgIGZvciAoYXV0byYgbmFtZSA6IHZhcnlIZWFkZXJOYW1lcykgewot
ICAgICAgICBpZiAoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG5hbWUpID09ICIq
IikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBB
U0NJSUxpdGVyYWwoIlJlc3BvbnNlIGhhcyBhICcqJyBWYXJ5IGhlYWRlciB2YWx1ZSIpIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKGhhc1Jlc3BvbnNlVmFyeVN0
YXJIZWFkZXJWYWx1ZShyZXNwb25zZS5nZXQoKSkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlc3BvbnNlIGhhcyBhICcqJyBW
YXJ5IGhlYWRlciB2YWx1ZSIpIH0pOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KHJlc3BvbnNlLT5zdGF0dXMoKSA9PSAyMDYpIHsKQEAgLTE3OSw3ICszMDYsNyBAQCB2b2lkIENh
Y2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRE9NUHJvbWlzZURlZgogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0xvYWRpbmcoKSkgewogICAg
ICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHJlc3BvbnNlLT5jb25zdW1l
Qm9keVdoZW5Mb2FkZWQoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gcmVx
dWVzdC5yZWxlYXNlTm9uTnVsbCgpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCB0aGlz
XShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlXaGVuTG9hZGVkKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
OwogICAgICAgICAgICAgZWxzZSB7CkBAIC0xOTUsNDYgKzMyMiw0MCBAQCB2b2lkIENhY2hlOjpw
dXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9N
UHJvbWlzZURlZgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYmF0Y2hQdXRPcGVyYXRp
b24oKnJlcXVlc3QsIHJlc3BvbnNlLmdldCgpLCByZXNwb25zZS0+Y29uc3VtZUJvZHkoKSwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0
KCksIHJlc3BvbnNlLT5jb25zdW1lQm9keSgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS5z
ZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6cmVtb3Zl
KFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewotICAgIFJlZlB0cjxGZXRjaFJl
cXVlc3Q+IHJlcXVlc3Q7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZl
dGNoUmVxdWVzdD4+KGluZm8pKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBXVEY6OmdldDxSZWZQdHI8
RmV0Y2hSZXF1ZXN0Pj4oaW5mbykucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgaWYgKHJlcXVl
c3QtPm1ldGhvZCgpICE9ICJHRVQiICYmICFvcHRpb25zLmlnbm9yZU1ldGhvZCkgewotICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVxdWVzdCA9IEZldGNo
UmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mbyks
IHsgfSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlcXVlc3RPckV4
Y2VwdGlvbiA9IHJlcXVlc3RGcm9tSW5mbyhXVEZNb3ZlKGluZm8pLCBvcHRpb25zLmlnbm9yZU1l
dGhvZCk7CisgICAgaWYgKHJlcXVlc3RPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2UpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYmF0Y2hEZWxldGVPcGVyYXRpb24oKnJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8Ym9vbD4mJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgV1RGTW92ZShvcHRpb25zKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXShFeGNlcHRpb25Pcjxib29sPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21p
c2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGU6Omtl
eXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKKyAgICBpZiAoVU5MSUtFTFkoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8udmFsdWUoKSkpIHsK
LSAgICAgICAgICAgIHJlcXVlc3QgPSBXVEY6OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5m
by52YWx1ZSgpKS5yZWxlYXNlTm9uTnVsbCgpOwotICAgICAgICAgICAgaWYgKHJlcXVlc3QtPm1l
dGhvZCgpICE9ICJHRVQiICYmICFvcHRpb25zLmlnbm9yZU1ldGhvZCkgewotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVmPEZldGNoUmVxdWVzdD4+IHsgfSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8udmFsdWUoKSksIHsg
fSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgIGF1dG8gcmVxdWVzdE9yRXhjZXB0aW9u
ID0gcmVxdWVzdEZyb21JbmZvKFdURk1vdmUoaW5mby52YWx1ZSgpKSwgb3B0aW9ucy5pZ25vcmVN
ZXRob2QpOworICAgICAgICBpZiAocmVxdWVzdE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7
CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiB7
IH0pOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIHJlcXVlc3QgPSBy
ZXF1ZXN0T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQogCiAgICAgaWYg
KCFyZXF1ZXN0KSB7CkBAIC0zMDYsNyArNDI3LDcgQEAgdm9pZCBDYWNoZTo6YmF0Y2hEZWxldGVP
cGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYK
ICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNv
cmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hS
ZXNwb25zZSYgcmVzcG9uc2UsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSYm
IHJlc3BvbnNlQm9keSkKK0NhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rp
b25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNw
b25zZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5
KQogewogICAgIC8vIEZJWE1FOiBBZGQgYSBzZXRIVFRQSGVhZGVyRmllbGRzIG9uIFJlc291cmNl
UmVzcG9uc2VCYXNlLgogICAgIFJlc291cmNlUmVzcG9uc2UgY2FjaGVkUmVzcG9uc2UgPSByZXNw
b25zZS5yZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC0zMzAsNiArNDUxLDExIEBAIHZvaWQgQ2FjaGU6
OmJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hSZXNw
b25zZSYgcmVzcG9uCiAgICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4g
cmVjb3JkczsKICAgICByZWNvcmRzLmFwcGVuZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdCwg
cmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VCb2R5KSkpOwogCisgICAgYmF0Y2hQdXRPcGVyYXRp
b24oV1RGTW92ZShyZWNvcmRzKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIENhY2hl
OjpiYXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3Jk
PiYmIHJlY29yZHMsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBj
YWxsYmFjaykKK3sKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9jb25uZWN0
aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihtX2lkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShWZWN0b3I8dWludDY0X3Q+JiYsIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmICghbV9pc1N0
b3BwZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKaW5kZXggM2NhMDgyZTgyNTdi
NWUzZDUxNWYwM2JiMTU0Y2I1ZjUxOTgxMGRiMi4uZWZiMzRiYmMxZTlmMDY2NWVmODE0ODk0MDgy
NTg1ZDRkYzFhM2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaApAQCAtNjIs
NiArNjIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENhY2hlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBTdHJpbmcmJiBuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4mJik7CiAKKyAgICBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4g
cmVxdWVzdEZyb21JbmZvKFJlcXVlc3RJbmZvJiYsIGJvb2wgaWdub3JlTWV0aG9kKTsKKwogICAg
IC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKQEAgLTcyLDYgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVR
dWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3Jh
Z2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0
Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2Vw
dGlvbk9yPGJvb2w+JiYpPiYmKTsKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZl
dGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2UmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNw
b25zZUJvZHkmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsK
KyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpSZWNvcmQ+JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7
CiAKICAgICB2b2lkIHVwZGF0ZVJlY29yZHMoVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OlJlY29yZD4mJik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGZmZDM5M2Ri
NWJlOTBkMDIxN2E2MWRjYTY2NWZjYTc0NTZmNzI2ZGIuLmE0ZDIzODA1YzYyZGU1ODljOTdjOWQ2
NzMzOTk2NzI1OWJhZWRhNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE3IEBACiAyMDE3LTA4LTIxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAorICAgICAgICBbQ2FjaGUgQVBJXSBBZGQgc3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Njc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUt
YWRkLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLXN0b3JhZ2UuaHR0cHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
Y2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29y
a2VyL2NhY2hlLXN0b3JhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0OgorCisyMDE3LTA4LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBbQ2FjaGUgQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQ2FjaGVTdG9yYWdlLm1hdGNoCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3NDcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3Rv
cmFnZS93aW5kb3cvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3Jh
Z2Uvd2luZG93L2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzE4ZmMzMjJhNmYz
MDBiOGQ2MWI0ODk3Y2Q0MjI2OGVhODMyYjUzZi4uY2Y3NGNmYWQ2ZGRmMmVlNGQxMmY3ZjZhNTc3
NDVlZmU2MzliOTk0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUt
YWRkLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNo
ZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDIwIEBACiAKIFBBU1MgQ2FjaGUu
YWRkIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyAKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRo
IHJlbGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBp
bXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIG5vbi1IVFRQL0hUVFBTIFVS
TCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZvciBu
b24tSFRUUC9IVFRQUyBVUkxzLiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRo
cmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBw
b3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi1G
QUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1ZXN0IG9iamVjdCBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
Tm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggUE9TVCByZXF1ZXN0
IGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yIG5v
bi1HRVQgcmVxdWVzdHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcg
b2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRl
ZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwg
Q2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCB3aXRoIHJlcXVlc3Qg
d2l0aCBudWxsIGJvZHkgKG5vdCBjb25zdW1lZCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1l
bnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggMjA2IHJlc3BvbnNlIGFzc2VydF90aHJvd3M6IENh
Y2hlLmFkZCBzaG91bGQgcmVqZWN0IG9uIHBhcnRpYWwgcmVzcG9uc2UgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3Qg
aW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVF
cnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCAyMDYgcmVzcG9uc2Ug
YXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCByZWplY3Qgd2l0aCBUeXBlRXJyb3Ig
aWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQot
RkFJTCBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0YXR1cyBvZiA0
MDQgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVzcG9uc2UgaXMg
IW9rIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RT
dXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhw
ZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkIHdp
dGggcmVxdWVzdCB0aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNTAwIGFzc2VydF90aHJvd3M6
IENhY2hlLmFkZCBzaG91bGQgcmVqZWN0IGlmIHJlc3BvbnNlIGlzICFvayBmdW5jdGlvbiAiZnVu
Y3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5v
dCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlw
ZUVycm9yIiAoIlR5cGVFcnJvciIpCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCByZWxhdGl2
ZSBVUkwgc3BlY2lmaWVkIGFzIGEgc3RyaW5nIAorUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGgg
bm9uLUhUVFAvSFRUUFMgVVJMIAorUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGggUmVxdWVzdCBv
YmplY3QgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJlcXVlc3QgCitQQVNTIENh
Y2hlLmFkZCBjYWxsZWQgdHdpY2Ugd2l0aCB0aGUgc2FtZSBSZXF1ZXN0IG9iamVjdCAKK1BBU1Mg
Q2FjaGUuYWRkIHdpdGggcmVxdWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1bWVkKSAKK1BB
U1MgQ2FjaGUuYWRkIHdpdGggMjA2IHJlc3BvbnNlIAorUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCAy
MDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCByZXN1bHRzIGlu
IGEgc3RhdHVzIG9mIDQwNCAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3Vs
dHMgaW4gYSBzdGF0dXMgb2YgNTAwIAogUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBubyBhcmd1bWVu
dHMgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHZhbGlkIGFuZCB1bmRlZmluZWQg
YXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBhbiBlbXB0eSBhcnJheSBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBzdHJpbmcg
VVJMIGFyZ3VtZW50cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNo
ZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxl
bWVudGVkIgotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBhIG1peCBvZiBzdWNjZWVkaW5nIGFuZCBm
YWlsaW5nIHJlcXVlc3RzIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZEFsbCBzaG91bGQgcmVqZWN0
IHdpdGggVHlwZUVycm9yIGlmIGFueSByZXF1ZXN0IGZhaWxzIGZ1bmN0aW9uICJmdW5jdGlvbiAo
KSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxl
bWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3Ii
ICgiVHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkQWxsIGNhbGxlZCB3aXRoIHRoZSBzYW1lIFJl
cXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGRBbGwg
c2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGlmIHRoZSBzYW1lIHJlcXVlc3QgaXMgYWRk
ZWQgdHdpY2UuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0
ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiB0aGF0IGlzIG5vdCBhIERPTUV4
Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFsIHRvIDks
IGV4cGVjdGVkIDExCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFycmF5IAorUEFT
UyBDYWNoZS5hZGRBbGwgd2l0aCBzdHJpbmcgVVJMIGFyZ3VtZW50cyAKK1BBU1MgQ2FjaGUuYWRk
QWxsIHdpdGggUmVxdWVzdCBhcmd1bWVudHMgCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4
IG9mIHN1Y2NlZWRpbmcgYW5kIGZhaWxpbmcgcmVxdWVzdHMgCitQQVNTIENhY2hlLmFkZEFsbCBj
YWxsZWQgd2l0aCB0aGUgc2FtZSBSZXF1ZXN0IG9iamVjdCBzcGVjaWZpZWQgdHdpY2UgCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLXN0b3JhZ2UuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggNzA5MTEyYjU4OTJkZjg3MWIwZDE1NmFhZjIzYzZmYjE0MTkzOWU1
MS4uNGZjZjU0M2I3NDgxYTNlNWY5NDY3NGY0NWM5YzFlYjJlNzk3OTI0NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93aW5kb3cvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMTEgKzEsMTEgQEAKIAogUEFTUyBDYWNoZVN0b3JhZ2Uub3BlbiAKLUZBSUwg
Q2FjaGVTdG9yYWdlLmRlbGV0ZSBkb29tcywgYnV0IGRvZXMgbm90IGRlbGV0ZSBpbW1lZGlhdGVs
eSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgorUEFTUyBDYWNoZVN0b3JhZ2UuZGVs
ZXRlIGRvb21zLCBidXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IAogUEFTUyBDYWNoZVN0
b3JhZ2Uub3BlbiB3aXRoIGFuIGVtcHR5IG5hbWUgCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdp
dGggbm8gYXJndW1lbnRzIAogUEFTUyBDYWNoZVN0b3JhZ2UuaGFzIHdpdGggZXhpc3RpbmcgY2Fj
aGUgCiBQQVNTIENhY2hlU3RvcmFnZS5oYXMgd2l0aCBub25leGlzdGVudCBjYWNoZSAKLUZBSUwg
Q2FjaGVTdG9yYWdlLm9wZW4gd2l0aCBleGlzdGluZyBjYWNoZSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90
IGltcGxlbWVudGVkIgorUEFTUyBDYWNoZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0aW5nIGNhY2hl
IAogUEFTUyBDYWNoZVN0b3JhZ2UuZGVsZXRlIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENh
Y2hlU3RvcmFnZS5kZWxldGUgd2l0aCBub25leGlzdGVudCBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9y
YWdlIG5hbWVzIGFyZSBET01TdHJpbmdzIG5vdCBVU1ZTdHJpbmdzIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
Y2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2Nh
Y2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLWFkZC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzE4
ZmMzMjJhNmYzMDBiOGQ2MWI0ODk3Y2Q0MjI2OGVhODMyYjUzZi4uY2Y3NGNmYWQ2ZGRmMmVlNGQx
MmY3ZjZhNTc3NDVlZmU2MzliOTk0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3Jr
ZXIvY2FjaGUtYWRkLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dv
cmtlci9jYWNoZS1hZGQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDIwIEBACiAKIFBB
U1MgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyAKLUZBSUwgQ2FjaGUuYWRkIGNh
bGxlZCB3aXRoIHJlbGF0aXZlIFVSTCBzcGVjaWZpZWQgYXMgYSBzdHJpbmcgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJy
b3I6IE5vdCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB3aXRoIG5vbi1IVFRQ
L0hUVFBTIFVSTCBhc3NlcnRfdGhyb3dzOiBDYWNoZS5hZGQgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yIGZvciBub24tSFRUUC9IVFRQUyBVUkxzLiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJv
dyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIg
KCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVF
cnJvciIpCi1GQUlMIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBSZXF1ZXN0IG9iamVjdCBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGQgY2FsbGVkIHdpdGggUE9T
VCByZXF1ZXN0IGFzc2VydF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3IgZm9yIG5vbi1HRVQgcmVxdWVzdHMuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5v
dFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9y
IikKLUZBSUwgQ2FjaGUuYWRkIGNhbGxlZCB0d2ljZSB3aXRoIHRoZSBzYW1lIFJlcXVlc3Qgb2Jq
ZWN0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQiCi1GQUlMIENhY2hlLmFkZCB3aXRo
IHJlcXVlc3Qgd2l0aCBudWxsIGJvZHkgKG5vdCBjb25zdW1lZCkgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5v
dCBpbXBsZW1lbnRlZCIKLUZBSUwgQ2FjaGUuYWRkIHdpdGggMjA2IHJlc3BvbnNlIGFzc2VydF90
aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgcmVqZWN0IG9uIHBhcnRpYWwgcmVzcG9uc2UgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiBOb3QgaW1wbGVtZW50ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmpl
Y3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCAyMDYg
cmVzcG9uc2UgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkQWxsIHNob3VsZCByZWplY3Qgd2l0aCBU
eXBlRXJyb3IgaWYgYW55IHJlcXVlc3QgZmFpbHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBOb3QgaW1wbGVtZW50ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBl
RXJyb3IiKQotRkFJTCBDYWNoZS5hZGQgd2l0aCByZXF1ZXN0IHRoYXQgcmVzdWx0cyBpbiBhIHN0
YXR1cyBvZiA0MDQgYXNzZXJ0X3Rocm93czogQ2FjaGUuYWRkIHNob3VsZCByZWplY3QgaWYgcmVz
cG9uc2UgaXMgIW9rIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2Jq
ZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVy
cm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwgQ2Fj
aGUuYWRkIHdpdGggcmVxdWVzdCB0aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNTAwIGFzc2Vy
dF90aHJvd3M6IENhY2hlLmFkZCBzaG91bGQgcmVqZWN0IGlmIHJlc3BvbnNlIGlzICFvayBmdW5j
dGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVk
RXJyb3I6IE5vdCBpbXBsZW1lbnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9i
amVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0
aCByZWxhdGl2ZSBVUkwgc3BlY2lmaWVkIGFzIGEgc3RyaW5nIAorUEFTUyBDYWNoZS5hZGQgY2Fs
bGVkIHdpdGggbm9uLUhUVFAvSFRUUFMgVVJMIAorUEFTUyBDYWNoZS5hZGQgY2FsbGVkIHdpdGgg
UmVxdWVzdCBvYmplY3QgCitQQVNTIENhY2hlLmFkZCBjYWxsZWQgd2l0aCBQT1NUIHJlcXVlc3Qg
CitQQVNTIENhY2hlLmFkZCBjYWxsZWQgdHdpY2Ugd2l0aCB0aGUgc2FtZSBSZXF1ZXN0IG9iamVj
dCAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB3aXRoIG51bGwgYm9keSAobm90IGNvbnN1
bWVkKSAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggMjA2IHJlc3BvbnNlIAorUEFTUyBDYWNoZS5hZGRB
bGwgd2l0aCAyMDYgcmVzcG9uc2UgCitQQVNTIENhY2hlLmFkZCB3aXRoIHJlcXVlc3QgdGhhdCBy
ZXN1bHRzIGluIGEgc3RhdHVzIG9mIDQwNCAKK1BBU1MgQ2FjaGUuYWRkIHdpdGggcmVxdWVzdCB0
aGF0IHJlc3VsdHMgaW4gYSBzdGF0dXMgb2YgNTAwIAogUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBu
byBhcmd1bWVudHMgCiBQQVNTIENhY2hlLmFkZEFsbCB3aXRoIGEgbWl4IG9mIHZhbGlkIGFuZCB1
bmRlZmluZWQgYXJndW1lbnRzIAotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBhbiBlbXB0eSBhcnJh
eSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGRBbGwgd2l0
aCBzdHJpbmcgVVJMIGFyZ3VtZW50cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIgot
RkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBSZXF1ZXN0IGFyZ3VtZW50cyBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
Tm90IGltcGxlbWVudGVkIgotRkFJTCBDYWNoZS5hZGRBbGwgd2l0aCBhIG1peCBvZiBzdWNjZWVk
aW5nIGFuZCBmYWlsaW5nIHJlcXVlc3RzIGFzc2VydF90aHJvd3M6IENhY2hlLmFkZEFsbCBzaG91
bGQgcmVqZWN0IHdpdGggVHlwZUVycm9yIGlmIGFueSByZXF1ZXN0IGZhaWxzIGZ1bmN0aW9uICJm
dW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
Tm90IGltcGxlbWVudGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJU
eXBlRXJyb3IiICgiVHlwZUVycm9yIikKLUZBSUwgQ2FjaGUuYWRkQWxsIGNhbGxlZCB3aXRoIHRo
ZSBzYW1lIFJlcXVlc3Qgb2JqZWN0IHNwZWNpZmllZCB0d2ljZSBhc3NlcnRfdGhyb3dzOiBDYWNo
ZS5hZGRBbGwgc2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGlmIHRoZSBzYW1lIHJlcXVl
c3QgaXMgYWRkZWQgdHdpY2UuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhy
ZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVkIiB0aGF0IGlzIG5v
dCBhIERPTUV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVx
dWFsIHRvIDksIGV4cGVjdGVkIDExCitQQVNTIENhY2hlLmFkZEFsbCB3aXRoIGFuIGVtcHR5IGFy
cmF5IAorUEFTUyBDYWNoZS5hZGRBbGwgd2l0aCBzdHJpbmcgVVJMIGFyZ3VtZW50cyAKK1BBU1Mg
Q2FjaGUuYWRkQWxsIHdpdGggUmVxdWVzdCBhcmd1bWVudHMgCitQQVNTIENhY2hlLmFkZEFsbCB3
aXRoIGEgbWl4IG9mIHN1Y2NlZWRpbmcgYW5kIGZhaWxpbmcgcmVxdWVzdHMgCitQQVNTIENhY2hl
LmFkZEFsbCBjYWxsZWQgd2l0aCB0aGUgc2FtZSBSZXF1ZXN0IG9iamVjdCBzcGVjaWZpZWQgdHdp
Y2UgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDA5Y2QxMmU2NTQ2ZmMwZTU2MWM5ZDI2Y2EwOTk1YWQwMGUyNDBm
ZmIuLjk0NDkyNjI1ZTJmYTZiM2ZlMmE3YzgzMzVkYjQyM2ExNDVkZWZiMjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtcHV0Lmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMSw2ICsxLDYgQEAKIAogUEFTUyBDYWNoZS5wdXQgY2FsbGVkIHdpdGggc2ltcGxlIFJlcXVl
c3QgYW5kIFJlc3BvbnNlIAotUEFTUyBDYWNoZS5wdXQgY2FsbGVkIHdpdGggUmVxdWVzdCBhbmQg
UmVzcG9uc2UgZnJvbSBmZXRjaCgpIAorRkFJTCBDYWNoZS5wdXQgY2FsbGVkIHdpdGggUmVxdWVz
dCBhbmQgUmVzcG9uc2UgZnJvbSBmZXRjaCgpIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBDYWNoaW5nIGEgUmVz
cG9uc2Ugd2l0aCBkYXRhIHN0b3JlZCBpbiBhIFJlYWRhYmxlU3RyZWFtIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIgogUEFTUyBDYWNoZS5wdXQgd2l0aCBSZXF1ZXN0IHdpdGhvdXQgYSBib2R5IAogUEFT
UyBDYWNoZS5wdXQgd2l0aCBSZXNwb25zZSB3aXRob3V0IGEgYm9keSAKIFBBU1MgQ2FjaGUucHV0
IHdpdGggYSBSZXNwb25zZSBjb250YWluaW5nIGFuIGVtcHR5IFVSTCAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXN0b3JhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQK
aW5kZXggNzA5MTEyYjU4OTJkZjg3MWIwZDE1NmFhZjIzYzZmYjE0MTkzOWU1MS4uNGZjZjU0M2I3
NDgxYTNlNWY5NDY3NGY0NWM5YzFlYjJlNzk3OTI0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3Rv
cmFnZS93b3JrZXIvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2Fj
aGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtc3RvcmFnZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEs
MTEgKzEsMTEgQEAKIAogUEFTUyBDYWNoZVN0b3JhZ2Uub3BlbiAKLUZBSUwgQ2FjaGVTdG9yYWdl
LmRlbGV0ZSBkb29tcywgYnV0IGRvZXMgbm90IGRlbGV0ZSBpbW1lZGlhdGVseSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogTm90IGltcGxlbWVudGVkIgorUEFTUyBDYWNoZVN0b3JhZ2UuZGVsZXRlIGRvb21zLCBi
dXQgZG9lcyBub3QgZGVsZXRlIGltbWVkaWF0ZWx5IAogUEFTUyBDYWNoZVN0b3JhZ2Uub3BlbiB3
aXRoIGFuIGVtcHR5IG5hbWUgCiBQQVNTIENhY2hlU3RvcmFnZS5vcGVuIHdpdGggbm8gYXJndW1l
bnRzIAogUEFTUyBDYWNoZVN0b3JhZ2UuaGFzIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENh
Y2hlU3RvcmFnZS5oYXMgd2l0aCBub25leGlzdGVudCBjYWNoZSAKLUZBSUwgQ2FjaGVTdG9yYWdl
Lm9wZW4gd2l0aCBleGlzdGluZyBjYWNoZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogTm90IGltcGxlbWVudGVk
IgorUEFTUyBDYWNoZVN0b3JhZ2Uub3BlbiB3aXRoIGV4aXN0aW5nIGNhY2hlIAogUEFTUyBDYWNo
ZVN0b3JhZ2UuZGVsZXRlIHdpdGggZXhpc3RpbmcgY2FjaGUgCiBQQVNTIENhY2hlU3RvcmFnZS5k
ZWxldGUgd2l0aCBub25leGlzdGVudCBjYWNoZSAKIFBBU1MgQ2FjaGVTdG9yYWdlIG5hbWVzIGFy
ZSBET01TdHJpbmdzIG5vdCBVU1ZTdHJpbmdzIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>