<?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>238905</bug_id>
          
          <creation_ts>2022-04-06 15:46:44 -0700</creation_ts>
          <short_desc>Add PAL::TextEncoding() constructor that takes in a StringView</short_desc>
          <delta_ts>2022-04-07 19:32:18 -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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859064</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 15:46:44 -0700</bug_when>
    <thetext>The PAL::TextEncoding() constructor can take a StringView instead of a String. This allows some call sites to be more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859067</commentid>
    <comment_count>1</comment_count>
      <attachid>456875</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 15:50:55 -0700</bug_when>
    <thetext>Created attachment 456875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859123</commentid>
    <comment_count>2</comment_count>
      <attachid>456882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 19:45:53 -0700</bug_when>
    <thetext>Created attachment 456882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859258</commentid>
    <comment_count>3</comment_count>
      <attachid>456882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 07:57:22 -0700</bug_when>
    <thetext>Comment on attachment 456882
Patch

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

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:419
&gt; +        while (pos &lt; length &amp;&amp; mediaType[pos] &lt;= &apos; &apos;)

Turns out this function was doing unsafe indexing in the String but we didn&apos;t realize until I switched to a StringView because this is how String&apos;s operator[] is implemented:
```
inline UChar String::characterAt(unsigned index) const
{
    if (!m_impl || index &gt;= m_impl-&gt;length())
        return 0;
    return (*m_impl)[index];
}
```

It returns 0 for out of bound access instead of crashing. The StringView&apos;s operator[] isn&apos;t as forgiving :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859356</commentid>
    <comment_count>4</comment_count>
      <attachid>456882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-07 12:05:40 -0700</bug_when>
    <thetext>Comment on attachment 456882
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:136
&gt; +    r-&gt;m_internalResponse.setTextEncodingName(extractCharsetFromMediaType(contentType).toString());

Seems unfortunate that setTextEncodingName can’t take the String we allocate with move semantics.

&gt; Source/WebCore/PAL/pal/text/TextEncoding.h:39
&gt;      PAL_EXPORT TextEncoding(const char* name);

Do we still need the const char* overload? Before, we clearly did because otherwise there would be an extra String create/destroy every time. But now maybe we could get rid of it since we have a StringView version. If we did that and it didn’t cause a performance problem, we could also get rid of the const String&amp; overload. Nice cleanup changing this to be more straightforward code.

When I originally wrote this very long ago, I thought of text encoding names as all ASCII literals, and back then this class was sort of a AtomString for ASCII literals. Seems sort of obsolete.

&gt; Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp:124
&gt; -        return PAL::TextEncoding(stripLeadingAndTrailingHTMLSpaces(charset.toStringWithoutCopying()));
&gt; +        return PAL::TextEncoding(charset.stripLeadingAndTrailingMatchedCharacters(isHTMLSpace&lt;UChar&gt;));

What a strange idiom shift with a quite different way to saying the same thing. Doesn’t need to be fixed in this patch, but it seems like we should add overloads or something so code doesn’t have to be so different in the two cases like this. We still need the String one for some call sites, I guess, because it optimizes the case where the string doesn’t have any leading and trailing spaces. But at least we can have String and StringView supported side by side or something.

&gt;&gt; Source/WebCore/platform/network/HTTPParsers.cpp:419
&gt;&gt; +        while (pos &lt; length &amp;&amp; mediaType[pos] &lt;= &apos; &apos;)
&gt; 
&gt; Turns out this function was doing unsafe indexing in the String but we didn&apos;t realize until I switched to a StringView because this is how String&apos;s operator[] is implemented:
&gt; ```
&gt; inline UChar String::characterAt(unsigned index) const
&gt; {
&gt;     if (!m_impl || index &gt;= m_impl-&gt;length())
&gt;         return 0;
&gt;     return (*m_impl)[index];
&gt; }
&gt; ```
&gt; 
&gt; It returns 0 for out of bound access instead of crashing. The StringView&apos;s operator[] isn&apos;t as forgiving :)

I would say &quot;this function was relying on String&apos;s operator[]&quot;; it wasn’t *unsafe* indexing for String, although agreed, it would be unsafe for an array or StringView. On the other hand, the case below where it checks pos instead of endpos was more obviously a mistake rather than intentionally relying on how String works, although the code behaved correctly despite the mistake because of the String operator[] behavior.

This function is written in a peculiar way. For example, the while loop condition isn’t needed at all; redundant since the findIgnoringASCIICase will return notFound. It seems to me the loop should be more like this:

    while ((pos = mediaType.findIgnoringASCIICase(&quot;charset&quot;, pos)) != notFound)

The &quot;charsetLen = 0&quot; is also unneeded. Seems like we could rewrite this with some more modern parsing helpers to be a lot clearer, straighten out the syntax, and do less checking on individual characters. But it’s OK with me to just fix it without changing its idioms like we have done here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859363</commentid>
    <comment_count>5</comment_count>
      <attachid>456882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 12:15:18 -0700</bug_when>
    <thetext>Comment on attachment 456882
Patch

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

&gt;&gt; Source/WebCore/PAL/pal/text/TextEncoding.h:39
&gt;&gt;      PAL_EXPORT TextEncoding(const char* name);
&gt; 
&gt; Do we still need the const char* overload? Before, we clearly did because otherwise there would be an extra String create/destroy every time. But now maybe we could get rid of it since we have a StringView version. If we did that and it didn’t cause a performance problem, we could also get rid of the const String&amp; overload. Nice cleanup changing this to be more straightforward code.
&gt; 
&gt; When I originally wrote this very long ago, I thought of text encoding names as all ASCII literals, and back then this class was sort of a AtomString for ASCII literals. Seems sort of obsolete.

I did not look too deeply into it but the constructor taking a `const char*` looked substantially different so I didn&apos;t dare drop it.
In particular, it ends up calling atomCanonicalTextEncodingName(const char* name) which does a simple lookup in textEncodingNameMap.

atomCanonicalTextEncodingName(const String&amp; alias) / atomCanonicalTextEncodingName(StringView) however, they end up calling atomCanonicalTextEncodingName(const CharacterType* characters, size_t length) which ends up allocating a new char array and copying the characters over one by one.
Then it will call the atomCanonicalTextEncodingName(const char* name). So it looks to me that the TextEncoding(StringView) constructor is currently less efficient than the TextEncoding(const char*) one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859367</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 12:20:20 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 456882 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456882&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/PAL/pal/text/TextEncoding.h:39
&gt; &gt;&gt;      PAL_EXPORT TextEncoding(const char* name);
&gt; &gt; 
&gt; &gt; Do we still need the const char* overload? Before, we clearly did because otherwise there would be an extra String create/destroy every time. But now maybe we could get rid of it since we have a StringView version. If we did that and it didn’t cause a performance problem, we could also get rid of the const String&amp; overload. Nice cleanup changing this to be more straightforward code.
&gt; &gt; 
&gt; &gt; When I originally wrote this very long ago, I thought of text encoding names as all ASCII literals, and back then this class was sort of a AtomString for ASCII literals. Seems sort of obsolete.
&gt; 
&gt; I did not look too deeply into it but the constructor taking a `const char*`
&gt; looked substantially different so I didn&apos;t dare drop it.
&gt; In particular, it ends up calling atomCanonicalTextEncodingName(const char*
&gt; name) which does a simple lookup in textEncodingNameMap.
&gt; 
&gt; atomCanonicalTextEncodingName(const String&amp; alias) /
&gt; atomCanonicalTextEncodingName(StringView) however, they end up calling
&gt; atomCanonicalTextEncodingName(const CharacterType* characters, size_t
&gt; length) which ends up allocating a new char array and copying the characters
&gt; over one by one.
&gt; Then it will call the atomCanonicalTextEncodingName(const char* name). So it
&gt; looks to me that the TextEncoding(StringView) constructor is currently less
&gt; efficient than the TextEncoding(const char*) one.

Maybe I could optimize the atomCanonicalTextEncodingName(StringView s) to simply call atomCanonicalTextEncodingName(const char* name) with a reinterpret_cast&lt;const char*&gt;(s.characters8()) if s.is8Bit()? And copy the characters to a new char array if !is8Bit(). Then I think the performance would be more comparable and we could get rid of the TextEncoding(const char*) constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859382</commentid>
    <comment_count>7</comment_count>
      <attachid>456882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-07 12:39:36 -0700</bug_when>
    <thetext>Comment on attachment 456882
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/PAL/pal/text/TextEncoding.h:39
&gt;&gt;&gt;&gt;      PAL_EXPORT TextEncoding(const char* name);
&gt;&gt;&gt; 
&gt;&gt;&gt; Do we still need the const char* overload? Before, we clearly did because otherwise there would be an extra String create/destroy every time. But now maybe we could get rid of it since we have a StringView version. If we did that and it didn’t cause a performance problem, we could also get rid of the const String&amp; overload. Nice cleanup changing this to be more straightforward code.
&gt;&gt;&gt; 
&gt;&gt;&gt; When I originally wrote this very long ago, I thought of text encoding names as all ASCII literals, and back then this class was sort of a AtomString for ASCII literals. Seems sort of obsolete.
&gt;&gt; 
&gt;&gt; I did not look too deeply into it but the constructor taking a `const char*` looked substantially different so I didn&apos;t dare drop it.
&gt;&gt; In particular, it ends up calling atomCanonicalTextEncodingName(const char* name) which does a simple lookup in textEncodingNameMap.
&gt;&gt; 
&gt;&gt; atomCanonicalTextEncodingName(const String&amp; alias) / atomCanonicalTextEncodingName(StringView) however, they end up calling atomCanonicalTextEncodingName(const CharacterType* characters, size_t length) which ends up allocating a new char array and copying the characters over one by one.
&gt;&gt; Then it will call the atomCanonicalTextEncodingName(const char* name). So it looks to me that the TextEncoding(StringView) constructor is currently less efficient than the TextEncoding(const char*) one.
&gt; 
&gt; Maybe I could optimize the atomCanonicalTextEncodingName(StringView s) to simply call atomCanonicalTextEncodingName(const char* name) with a reinterpret_cast&lt;const char*&gt;(s.characters8()) if s.is8Bit()? And copy the characters to a new char array if !is8Bit(). Then I think the performance would be more comparable and we could get rid of the TextEncoding(const char*) constructor.

Doesn’t seem that important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859441</commentid>
    <comment_count>8</comment_count>
      <attachid>456969</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 14:32:05 -0700</bug_when>
    <thetext>Created attachment 456969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859562</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-07 19:31:45 -0700</bug_when>
    <thetext>Committed r292588 (249421@main): &lt;https://commits.webkit.org/249421@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456969.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859563</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 19:32:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91459274&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456875</attachid>
            <date>2022-04-06 15:50:55 -0700</date>
            <delta_ts>2022-04-06 19:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238905-20220406155054.patch</filename>
            <type>text/plain</type>
            <size>20845</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uZGVhNDlmMGRkMDcxMmUzYjlhYTNmM2QxZWNjZTM3
ZDU4OTVhYzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTA0LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBBTDo6VGV4dEVuY29k
aW5nKCkgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBpbiBhIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODkwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHNvbWUgY2Fs
bCBzaXRlcyB0byBiZSBhIGJpdCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBh
cnNlcjo6ZW5jb2RpbmdGcm9tTWV0YUF0dHJpYnV0ZXMpOgorICAgICAgICAqIGxvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGluZ0Zyb21BY2NlcHRDaGFy
c2V0KToKKyAgICAgICAgKiBsb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZy
b21DYWNoZWRIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5k
bGVEYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3Vy
Y2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZmluYWxSZXNwb25zZUNoYXJzZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKwogMjAy
Mi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
dW5uZWNlc3NhcnkgRXhjZXB0aW9uT3I8PiByZXR1cm4gdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGRkNTJkOTdiNjNjOWJmN2RkZmFlYzkzMDA0ZGUzMDE4ZWNiNTI4YzIuLmM5MTc5ODk1NDMy
MGViYTMzYmRkNTU2ZTBkMjQwYjUxZTE1ZDdkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDIyLTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFBBTDo6VGV4dEVuY29kaW5nKCkgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBp
biBhIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIHNvbWUgY2FsbCBzaXRlcyB0byBiZSBhIGJpdCBtb3JlIGVmZmlj
aWVudC4KKworICAgICAgICAqIHBhbC90ZXh0L1RleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChQ
QUw6OlRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKToKKyAgICAgICAgKiBwYWwvdGV4dC9UZXh0
RW5jb2RpbmcuaDoKKyAgICAgICAgKFBBTDo6VGV4dEVuY29kaW5nOjpUZXh0RW5jb2RpbmcpOgor
ICAgICAgICAqIHBhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFBB
TDo6YXRvbUNhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAqIHBhbC90ZXh0L1Rl
eHRFbmNvZGluZ1JlZ2lzdHJ5Lmg6CisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCByZXBsYWNpbmcgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciB3aXRoIGEgU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKSBmdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAxOTI2YjE1NTMzZGEzMGJjZjQ3NzkzMDM0NzVhYWNhODg0ODM0ODY3
Li45Yzg5ZmQxNDhkZGMxODBiZTI5MzRmYmUxZDJkNzYxNTI5MDk3ZGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIyLTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFBBTDo6VGV4dEVuY29kaW5nKCkgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBpbiBhIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWxsb3dzIHNvbWUgY2FsbCBzaXRlcyB0byBiZSBhIGJpdCBtb3JlIGVm
ZmljaWVudC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlcXVl
c3ROZXh0UGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZEdl
dEZpbGVJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNr
KToKKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcHJvdmUgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplIHRvIG5v
dCBhbGxvY2F0ZSBhIG5ldyBKU0NvbnRleHQgZXZlcnkgc2Vjb25kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCAyZmIwNWEzOTdhMDI1MjI5
YmUzOWI3ZjJjZmIzOWExOTg4NTgyMjllLi5iNjQ2MjY1ZmNlNTRjODdiNTkzYWM2YjY0YjNjYjVk
NmEwMzdiZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25z
ZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjbwogICAg
IHItPm1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsKICAgICBhdXRvIG1pbWVUeXBlID0gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CiAgICAgci0+bV9pbnRlcm5h
bFJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlLmlzRW1wdHkoKSA/IGRlZmF1bHRNSU1FVHlw
ZSgpIDogbWltZVR5cGUpOwotICAgIHItPm1faW50ZXJuYWxSZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOworICAgIHIt
Pm1faW50ZXJuYWxSZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShjb250ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAKICAgICByLT5tX2ludGVybmFs
UmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKICAgICByLT5tX2ludGVybmFsUmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmluZGV4IDRlMDIxMDNhZGNhNTgyYWJiMzNjMDVh
OWU3YmZhOTk4YTI1Yjg2MmUuLjViZDU0MmRiYmNmMzViZWI2YzczNDlmYWY2ODgwMjNlNDc3ZTM3
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2Rpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmcuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKGNvbnN0IGNoYXIqIG5h
bWUpCiB7CiB9CiAKLVRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK1RleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKFN0cmluZ1ZpZXcgbmFtZSkKICAgICA6IG1f
bmFtZShhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShuYW1lKSkKICAgICAsIG1fYmFja3Ns
YXNoQXNDdXJyZW5jeVN5bWJvbChiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggZjQ2NjRjOTFlYTQz
NWVhNWNkZGI5OTFjZmNkMjI0Nzc2YjJjYjE3Zi4uODBkYzE4MzRkZWQwZjJmMjg4YjZkMWMwNzcy
NmRiZGVmMTJiMWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1Rl
eHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2Rp
bmcuaApAQCAtMzcsNyArMzcsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nIDogcHVibGljIFdURjo6
VVJMVGV4dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICBUZXh0RW5jb2RpbmcoKSA9IGRlZmF1bHQ7
CiAgICAgUEFMX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFtZSk7Ci0gICAgUEFM
X0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBQQUxfRVhQT1JU
IFRleHRFbmNvZGluZyhTdHJpbmdWaWV3IG5hbWUpOworCisgICAgVGV4dEVuY29kaW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBUZXh0RW5jb2RpbmcoU3RyaW5nVmlldyB7IG5hbWUg
fSkKKyAgICB7CisgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3Ry
eS5jcHAKaW5kZXggZDFiYTA4NGYxY2JiZTUwMjQ3OWE1NjRkMjFiNWY4YTc0MzkzODA3Yy4uNGJl
MzIzYzg4M2ZjMTljYzBhZTU4YThkZjkxMmU2NDZmZjYwMzA1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC0yOTIs
NyArMjkyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0
IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW0KICAgICByZXR1cm4gYXRvbUNhbm9u
aWNhbFRleHRFbmNvZGluZ05hbWUoYnVmZmVyKTsKIH0KIAotY29uc3QgY2hhciogYXRvbUNhbm9u
aWNhbFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBhbGlhcykKK2NvbnN0IGNoYXIqIGF0
b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKFN0cmluZ1ZpZXcgYWxpYXMpCiB7CiAgICAgaWYg
KGFsaWFzLmlzRW1wdHkoKSB8fCAhYWxpYXMuaXNBbGxBU0NJSSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGlu
Z1JlZ2lzdHJ5LmgKaW5kZXggZDFhZGJlNWYwZjM0MjE5MThkMzQxOThjOGQ3YzczNGY3ZWE5NWY5
MS4uOGY0NGE1NzIwZDY1MDJlYjRmZGNlMWRkODg3MzUzNzk0ODYzNGM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgKQEAgLTQz
LDcgKzQzLDcgQEAgUEFMX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0
Q29kZWMoY29uc3QgVGV4dEVuY29kaW5nJik7CiAKIC8vIE9ubHkgVGV4dEVuY29kaW5nIHNob3Vs
ZCB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZGlyZWN0bHkuCiBjb25zdCBjaGFyKiBhdG9t
Q2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBhbGlhcyk7Ci1jb25zdCBjaGFy
KiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKK2NvbnN0IGNo
YXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKFN0cmluZ1ZpZXcpOwogYm9vbCBub0V4
dGVuZGVkVGV4dEVuY29kaW5nTmFtZVVzZWQoKTsKIGJvb2wgaXNKYXBhbmVzZUVuY29kaW5nKGNv
bnN0IGNoYXIqIGNhbm9uaWNhbEVuY29kaW5nTmFtZSk7CiBib29sIHNob3VsZFNob3dCYWNrc2xh
c2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciogY2Fub25pY2FsRW5jb2RpbmdOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IGFjZjRm
ZjliMTg4ZmY2YmU2Mjg0MTI1ZDM4OTEwNjU4NGFjOTI0MjAuLmY3OTMzYmJlZjhiYmRmNDQzNGNl
NjI4MjdlYzQwYjgwOTM4OGRjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgRmlsZVJlYWRlckxvYWRlcjo6
aXNDb21wbGV0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2J5dGVzTG9hZGVkID09IG1fdG90YWxC
eXRlczsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmIGVuY29kaW5nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyhTdHJpbmdW
aWV3IGVuY29kaW5nKQogewogICAgIGlmICghZW5jb2RpbmcuaXNFbXB0eSgpKQogICAgICAgICBt
X2VuY29kaW5nID0gUEFMOjpUZXh0RW5jb2RpbmcoZW5jb2RpbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA5Y2M1Y2VjNWJhYzRmNTUxMDMzM2QyNjBh
ZjIxNjMzOTI0NjcxMzM4Li5iMDczMTg4NTI2N2U5N2VhZTBmYThkZjI3MjI1OTA3MDk2N2U1YTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtODIsNyAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fdG90YWxCeXRlczsgfQogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gZXJyb3JD
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAotICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRFbmNvZGluZyhTdHJpbmdWaWV3KTsKICAg
ICB2b2lkIHNldERhdGFUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpIHsgbV9kYXRhVHlwZSA9
IGRhdGFUeXBlOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIHsgcmV0dXJuIG1fdXJsRm9yUmVh
ZGluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFD
aGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hh
cnNldFBhcnNlci5jcHAKaW5kZXggMGE1ZWQ3OGY0NThmOTliNmJjN2ZjMzcxZGY5NGNmZTkyNWE0
ZDQ4MC4uMDM5YmY5YWI4YWMyYzU5NTE1NjVjNjRmMmMyMmRlYTE2NjdjYzgyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3Bw
CkBAIC0xMjEsNyArMTIxLDcgQEAgUEFMOjpUZXh0RW5jb2RpbmcgSFRNTE1ldGFDaGFyc2V0UGFy
c2VyOjplbmNvZGluZ0Zyb21NZXRhQXR0cmlidXRlcyhjb25zdCBBdHRyaWIKICAgICB9CiAKICAg
ICBpZiAobW9kZSA9PSBDaGFyc2V0IHx8IChtb2RlID09IFByYWdtYSAmJiBnb3RQcmFnbWEpKQot
ICAgICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2Rpbmcoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGNoYXJzZXQudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSk7CisgICAgICAgIHJl
dHVybiBQQUw6OlRleHRFbmNvZGluZyhjaGFyc2V0LnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0
Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KSk7CiAKICAgICByZXR1cm4gUEFMOjpU
ZXh0RW5jb2RpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CmluZGV4IDcwMjYwNzg4MGEwNTkyMTM0MWQ0MTFmZGQzZmZjODk0ZTAxMzI5ZDIuLjZlNjI2Zjg0
NDljNTUwZDI4ZWY0ZTY0N2YxNzYwMTAxYmNhMTNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBQQUw6OlRleHRF
bmNvZGluZyBlbmNvZGluZ0Zyb21BY2NlcHRDaGFyc2V0KGNvbnN0IFN0cmluZyYgYWNjZXB0Q2hh
cnNldCwKICAgICBTdHJpbmcgbm9ybWFsaXplZEFjY2VwdENoYXJzZXQgPSBhY2NlcHRDaGFyc2V0
OwogICAgIG5vcm1hbGl6ZWRBY2NlcHRDaGFyc2V0LnJlcGxhY2UoJywnLCAnICcpOwogCi0gICAg
Zm9yIChhdXRvJiBjaGFyc2V0IDogbm9ybWFsaXplZEFjY2VwdENoYXJzZXQuc3BsaXQoJyAnKSkg
eworICAgIGZvciAoYXV0byBjaGFyc2V0IDogU3RyaW5nVmlldyB7IG5vcm1hbGl6ZWRBY2NlcHRD
aGFyc2V0IH0uc3BsaXQoJyAnKSkgewogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyBlbmNvZGlu
ZyhjaGFyc2V0KTsKICAgICAgICAgaWYgKGVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybiBlbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3Vw
L1Jlc291cmNlTG9hZGVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNv
dXJjZUxvYWRlclNvdXAuY3BwCmluZGV4IDdjNGY0N2UzZDMwYTRkMDY2MjgzMGZkYTIxYWNhOTlh
M2QxZWZmZjAuLjNhZDM3OTkyOTFkMTdhZGZlMjNhMjQ2MTc4MjUyYzBkNjk4ZjJhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAg
ICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHVybC5w
YXRoKCkudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvbnRlbnRU
eXBlKGdfY29udGVudF90eXBlX2d1ZXNzKGZpbGVOYW1lLmdldCgpLCBkYXRhLCBkYXRhU2l6ZSwg
bnVsbHB0cikpOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlw
ZS5nZXQoKSB9OwotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50
VHlwZVN0cmluZykgfTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwg
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0cmluZyksIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGVTdHJpbmcpLnRvU3RyaW5nKCkgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoMjAwKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9z
KTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSwgY29udGVudFR5cGVTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCBlN2IzNzNiZTRjNGRiMzA3OTZkNzc1
NWIyNmQxOWQ2MmEwM2ZhMjkzLi4yODUwMDUyOTJmMzMxMjg2YjA1NzliMWM3MDJkYTRiYWVhYmFj
YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogICAgIHJldHVybiBtZWRpYVR5cGUuc3Vic3Ry
aW5nKHR5cGVTdGFydCwgdHlwZUVuZCAtIHR5cGVTdGFydCk7CiB9CiAKLVN0cmluZyBleHRyYWN0
Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCitTdHJpbmdWaWV3
IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShTdHJpbmdWaWV3IG1lZGlhVHlwZSkKIHsKICAg
ICB1bnNpZ25lZCBjaGFyc2V0UG9zID0gMCwgY2hhcnNldExlbiA9IDA7CiAgICAgc2l6ZV90IHBv
cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgK
aW5kZXggOTIwYTVhNWI2MTRjOWMxZjg5NzRjZWYyNWMxMjZiOTc3YmVmNmNkOS4uMDUyOGMwMjkw
MGI2YzFjNjdhMTdiMWJhNTYzMDEwZjgxMmY3NWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtODEsNyArODEsNyBAQCBib29sIGlzVmFs
aWRIVFRQVG9rZW4oU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhU
VFBEYXRlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlz
cG9zaXRpb24oU3RyaW5nVmlldyk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CitTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShTdHJpbmdWaWV3KTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhT
U1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJl
YXNvbiwgdW5zaWduZWQmIGZhaWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwogQXRv
bVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmlu
ZyYpOwogV0VCQ09SRV9FWFBPUlQgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZyYW1l
T3B0aW9uc0hlYWRlcihTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IGE3YTE1MjdjODZh
YTNjNWYwZDJlNWJhMGQxZGIwMzA0NTJhZjVmNTMuLmMwYmMzNTYyNzE4NmI0ZDY2MzgxNDU4Njc5
MjczNGY1NTE1NjJkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
Q3VybENhY2hlRW50cnk6OnNldFJlc3BvbnNlRnJvbUNhY2hlZEhlYWRlcnMoUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNv
bnRlbnRMZW5ndGgpOyAvLyAtMSBvbiBwYXJzZSBlcnJvciBvciBudWxsCiAKICAgICByZXNwb25z
ZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7Ci0gICAgcmVzcG9uc2Uu
c2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUocmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKKyAgICByZXNw
b25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShyZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkudG9TdHJp
bmcoKSk7CiB9CiAKIHZvaWQgQ3VybENhY2hlRW50cnk6OmRpZEZhaWwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcAppbmRleCBkZWEwZGFjNGJkMDAyZGU4OWRjODIwM2I4MDRjNzYyYTViZjE0N2I3Li42
MjM3ZmI5NDBlOWIxZmMxZWM5NWVjNDA2MmM0MGQ4OWRjY2Y3MTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcApAQCAtNTM4LDE0ICs1MzgsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxl
RGF0YVVSTCgpCiAgICAgICAgIG1lZGlhVHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwogCiAgICAgU3Ry
aW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtZWRpYVR5cGUpOwot
ICAgIFN0cmluZyBjaGFyc2V0ID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1lZGlhVHlw
ZSk7CisgICAgU3RyaW5nVmlldyBjaGFyc2V0ID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KG1lZGlhVHlwZSk7CiAKICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgIGNoYXJz
ZXQgPSAiVVMtQVNDSUkiX3M7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAg
IHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKLSAgICByZXNwb25zZS5zZXRUZXh0RW5j
b2RpbmdOYW1lKGNoYXJzZXQpOworICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoY2hh
cnNldC50b1N0cmluZygpKTsKICAgICByZXNwb25zZS5zZXRVUkwoZC0+bV9maXJzdFJlcXVlc3Qu
dXJsKCkpOwogCiAgICAgaWYgKGJhc2U2NCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5k
ZXggNWJmOGQ2ODAxMWMyODMwNDc4YzA3NjMxODNkZDY4OTIzMjc1ZmQ2ZS4uMjkzMWQwNWQ0YzI5
YTNkNjk3MGM5ZjdhZDdmYzBmOTZkYzc1MjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShj
b25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIH0KIAogICAgIHNldE1pbWVUeXBlKGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwotICAgIHNldFRleHRF
bmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGh0dHBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CisgICAgc2V0VGV4dEVuY29kaW5nTmFtZShl
eHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSkpLnRvU3RyaW5nKCkpOwogICAgIHNldFNvdXJjZShSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRl
eCA4ODhkYjdkOGYzMzkyOGRmNmY2Y2Y5OTc2OTFkZGYyOGY1YzI2MDUxLi4zMmUwMDI4NTU2OTQ2
MzJhMDI3NzQwOTE0NTQzZjc3MzU3NTcxZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3Vw
TWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBzZXRNaW1lVHlw
ZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgaWYgKG1f
bWltZVR5cGUuaXNFbXB0eSgpICYmIG1faHR0cFN0YXR1c0NvZGUgIT0gU09VUF9TVEFUVVNfTk9U
X01PRElGSUVEKQogICAgICAgICBzZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlw
ZUZvclBhdGgobV91cmwucGF0aCgpLnRvU3RyaW5nKCkpKTsKLSAgICBzZXRUZXh0RW5jb2RpbmdO
YW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOworICAgIHNldFRl
eHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKS50
b1N0cmluZygpKTsKIAogICAgIHNldEV4cGVjdGVkQ29udGVudExlbmd0aChzb3VwX21lc3NhZ2Vf
aGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgocmVzcG9uc2VIZWFkZXJzKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAwMTU0Zjc2NWM4MDUzMWU0NDAwYzgxNzA0
MWEwMzkyNDU1MGQ3Njk2Li5jMDllOTQxMTA2OGE0MzVlYTFlZGQ0NTM3ZGJlYjQwZmMyMGQ3ZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTk5NCw5ICs5OTQsOSBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRGVjb2RlUmVzcG9uc2UoWE1MSHR0cFJlcXVlc3Q6
OlJlc3BvbnNlVHlwZSB0eXBlKQogLy8gaHR0cHM6Ly94aHIuc3BlYy53aGF0d2cub3JnLyNmaW5h
bC1jaGFyc2V0CiBQQUw6OlRleHRFbmNvZGluZyBYTUxIdHRwUmVxdWVzdDo6ZmluYWxSZXNwb25z
ZUNoYXJzZXQoKSBjb25zdAogewotICAgIFN0cmluZyBsYWJlbCA9IG1fcmVzcG9uc2VFbmNvZGlu
ZzsKKyAgICBTdHJpbmdWaWV3IGxhYmVsID0gbV9yZXNwb25zZUVuY29kaW5nOwogCi0gICAgU3Ry
aW5nIG92ZXJyaWRlUmVzcG9uc2VDaGFyc2V0ID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KG1fbWltZVR5cGVPdmVycmlkZSk7CisgICAgU3RyaW5nVmlldyBvdmVycmlkZVJlc3BvbnNlQ2hh
cnNldCA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShsYWJlbCk7CiAgICAgaWYgKCFvdmVy
cmlkZVJlc3BvbnNlQ2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgIGxhYmVsID0gb3ZlcnJpZGVS
ZXNwb25zZUNoYXJzZXQ7CiAKQEAgLTEwNDYsNyArMTA0Niw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICBj
aGFuZ2VTdGF0ZShIRUFERVJTX1JFQ0VJVkVEKTsKIAogICAgIGlmICghbV9taW1lVHlwZU92ZXJy
aWRlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gZXh0cmFjdENoYXJz
ZXRGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGVPdmVycmlkZSk7CisgICAgICAgIG1fcmVzcG9uc2VF
bmNvZGluZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUp
LnRvU3RyaW5nKCk7CiAgICAgaWYgKG1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKaW5kZXggYWVmMzEyNTQyZjg2ZjE1ODQ1OTc2ODE5OTEwYTNhNWFh
MGJkMzkyMC4uMWYwYjdlNGU5OWVjZDMwZDg1ZWI2NTYyODhiNTYzZDQyMzkwY2Q3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRTdHJl
YW0KICAgICBhdXRvKiBoZWFkZXJzID0gc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFtX2dldF9o
ZWFkZXJzKG1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCkpOwogICAgIFN0cmluZyBjb250ZW50
VHlwZSB7IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNvbnRlbnQtVHlw
ZSIpIH07CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9maXJzdFJlcXVlc3Qu
dXJsKCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLAotICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVycyksIGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOworICAgICAgICBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVycyksIGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShjb250ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAgICAgbV9yZXNwb25zZS51cGRh
dGVGcm9tU291cE1lc3NhZ2VIZWFkZXJzKGhlYWRlcnMpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKCk7CiB9CkBAIC0xNjkzLDcgKzE2OTMsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a1NvdXA6OmRpZEdldEZpbGVJbmZvKEdGaWxlSW5mbyogaW5mbykKICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGlu
Zm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJv
bU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwotICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNv
ZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CisgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRp
YVR5cGUoY29udGVudFR5cGUpLnRvU3RyaW5nKCkpOwogICAgICAgICBpZiAobV9yZXNwb25zZS5t
aW1lVHlwZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUo
TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fcmVzcG9uc2UudXJsKCkucGF0aCgp
LnRvU3RyaW5nKCkpKTsKICAgICAgICAgbV9yZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGgoZ19maWxlX2luZm9fZ2V0X3NpemUoaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRl
eCAwYzNlMmI3ZWE4Y2UyMDk1Njg3ZGMzOWVjZThjNDc1NzdhMDhmMTE5Li5jZjIwMTdhYWVkYzVm
N2E0ODYxNzliMWMzOGQwNDNjZWYyM2IyMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAt
MjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFwcml2LT5i
eXRlc1JlYWQpIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsgd2ViS2l0VVJJU2NoZW1l
UmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdl
dFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHJlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KSk7CisgICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKS50b1N0cmluZygpKTsKICAgICAgICAgY29uc3QgQ1N0
cmluZyYgc3RhdHVzTWVzc2FnZSA9IHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzTWVz
c2FnZShyZXNwKTsKICAgICAgICAgaWYgKHN0YXR1c01lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456882</attachid>
            <date>2022-04-06 19:45:53 -0700</date>
            <delta_ts>2022-04-07 14:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238905-20220406194552.patch</filename>
            <type>text/plain</type>
            <size>22394</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEzMTI5N2YxNzFkMTZm
ZTZmMTFlNGUxNTVkZjg4M2I1MmJjYTI4My4uNzM3MzE3ZjgxOWVhMzBjMGRlYTk2MzQ3NTY5ZDFi
MjYwNGQzOTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTA0LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBBTDo6VGV4dEVuY29k
aW5nKCkgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBpbiBhIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODkwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHNvbWUgY2Fs
bCBzaXRlcyB0byBiZSBhIGJpdCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBh
cnNlcjo6ZW5jb2RpbmdGcm9tTWV0YUF0dHJpYnV0ZXMpOgorICAgICAgICAqIGxvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGluZ0Zyb21BY2NlcHRDaGFy
c2V0KToKKyAgICAgICAgKiBsb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZy
b21DYWNoZWRIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5k
bGVEYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3Vy
Y2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZmluYWxSZXNwb25zZUNoYXJzZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKwogMjAy
Mi0wNC0wNiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBNYWMgXSBhY2Nlc3NpYmlsaXR5L21hYy9leHBhbmRlZC1ub3RpZmljYXRpb24uaHRtbCBp
cyBhIGZsYWt5IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZGQ1MmQ5N2I2M2M5
YmY3ZGRmYWVjOTMwMDRkZTMwMThlY2I1MjhjMi4uYzkxNzk4OTU0MzIwZWJhMzNiZGQ1NTZlMGQy
NDBiNTFlMTVkN2RkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjIt
MDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgUEFM
OjpUZXh0RW5jb2RpbmcoKSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGluIGEgU3RyaW5nVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxv
d3Mgc29tZSBjYWxsIHNpdGVzIHRvIGJlIGEgYml0IG1vcmUgZWZmaWNpZW50LgorCisgICAgICAg
ICogcGFsL3RleHQvVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFBBTDo6VGV4dEVuY29kaW5n
OjpUZXh0RW5jb2RpbmcpOgorICAgICAgICAqIHBhbC90ZXh0L1RleHRFbmNvZGluZy5oOgorICAg
ICAgICAoUEFMOjpUZXh0RW5jb2Rpbmc6OlRleHRFbmNvZGluZyk6CisgICAgICAgICogcGFsL3Rl
eHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwOgorICAgICAgICAoUEFMOjphdG9tQ2Fub25pY2Fs
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgICogcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0
cnkuaDoKKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIHdp
dGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDE5MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjljODlmZDE0OGRkYzE4
MGJlMjkzNGZiZTFkMmQ3NjE1MjkwOTdkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
UEFMOjpUZXh0RW5jb2RpbmcoKSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGluIGEgU3RyaW5nVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBh
bGxvd3Mgc29tZSBjYWxsIHNpdGVzIHRvIGJlIGEgYml0IG1vcmUgZWZmaWNpZW50LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorCiAyMDIyLTA0LTA2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUgdG8gbm90IGFsbG9jYXRlIGEgbmV3
IEpTQ29udGV4dCBldmVyeSBzZWNvbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDJmYjA1YTM5N2EwMjUyMjliZTM5YjdmMmNmYjM5YTE5
ODg1ODIyOWUuLmI2NDYyNjVmY2U1NGM4N2I1OTNhYzZiNjRiM2NiNWQ2YTAzN2JlYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTMz
LDcgKzEzMyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25z
ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgci0+bV9jb250ZW50VHlw
ZSA9IGNvbnRlbnRUeXBlOwogICAgIGF1dG8gbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKICAgICByLT5tX2ludGVybmFsUmVzcG9uc2Uuc2V0TWlt
ZVR5cGUobWltZVR5cGUuaXNFbXB0eSgpID8gZGVmYXVsdE1JTUVUeXBlKCkgOiBtaW1lVHlwZSk7
Ci0gICAgci0+bV9pbnRlcm5hbFJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENo
YXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CisgICAgci0+bV9pbnRlcm5hbFJlc3Bv
bnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlKS50b1N0cmluZygpKTsKIAogICAgIHItPm1faW50ZXJuYWxSZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHItPm1faW50ZXJuYWxSZXNwb25zZS5zZXRIVFRQU3Rh
dHVzVGV4dChzdGF0dXNUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
dGV4dC9UZXh0RW5jb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRF
bmNvZGluZy5jcHAKaW5kZXggNGUwMjEwM2FkY2E1ODJhYmIzM2MwNWE5ZTdiZmE5OThhMjViODYy
ZS4uNWJkNTQyZGJiY2YzNWJlYjZjNzM0OWZhZjY4ODAyM2U0NzdlMzdmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
VGV4dEVuY29kaW5nOjpUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFtZSkKIHsKIH0KIAotVGV4
dEVuY29kaW5nOjpUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQorVGV4dEVuY29kaW5n
OjpUZXh0RW5jb2RpbmcoU3RyaW5nVmlldyBuYW1lKQogICAgIDogbV9uYW1lKGF0b21DYW5vbmlj
YWxUZXh0RW5jb2RpbmdOYW1lKG5hbWUpKQogICAgICwgbV9iYWNrc2xhc2hBc0N1cnJlbmN5U3lt
Ym9sKGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCBmNDY2NGM5MWVhNDM1ZWE1Y2RkYjk5MWNmY2Qy
MjQ3NzZiMmNiMTdmLi44MGRjMTgzNGRlZDBmMmYyODhiNmQxYzA3NzI2ZGJkZWYxMmIxZDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5oCkBAIC0zNyw3ICsz
NywxMiBAQCBjbGFzcyBUZXh0RW5jb2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2Rpbmcg
ewogcHVibGljOgogICAgIFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKICAgICBQQUxfRVhQT1JU
IFRleHRFbmNvZGluZyhjb25zdCBjaGFyKiBuYW1lKTsKLSAgICBQQUxfRVhQT1JUIFRleHRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFBBTF9FWFBPUlQgVGV4dEVuY29kaW5nKFN0
cmluZ1ZpZXcgbmFtZSk7CisKKyAgICBUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQor
ICAgICAgICA6IFRleHRFbmNvZGluZyhTdHJpbmdWaWV3IHsgbmFtZSB9KQorICAgIHsKKyAgICB9
CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRleCBkMWJh
MDg0ZjFjYmJlNTAyNDc5YTU2NGQyMWI1ZjhhNzQzOTM4MDdjLi40YmUzMjNjODgzZmMxOWNjMGFl
NThhOGRmOTEyZTY0NmZmNjAzMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3QgY2hhciogYXRvbUNhbm9u
aWNhbFRleHRFbmNvZGluZ05hbQogICAgIHJldHVybiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5n
TmFtZShidWZmZXIpOwogfQogCi1jb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5n
TmFtZShjb25zdCBTdHJpbmcmIGFsaWFzKQorY29uc3QgY2hhciogYXRvbUNhbm9uaWNhbFRleHRF
bmNvZGluZ05hbWUoU3RyaW5nVmlldyBhbGlhcykKIHsKICAgICBpZiAoYWxpYXMuaXNFbXB0eSgp
IHx8ICFhbGlhcy5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaAppbmRl
eCBkMWFkYmU1ZjBmMzQyMTkxOGQzNDE5OGM4ZDdjNzM0ZjdlYTk1ZjkxLi44ZjQ0YTU3MjBkNjUw
MmViNGZkY2UxZGQ4ODczNTM3OTQ4NjM0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaApAQCAtNDMsNyArNDMsNyBAQCBQQUxf
RVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0
RW5jb2RpbmcmKTsKIAogLy8gT25seSBUZXh0RW5jb2Rpbmcgc2hvdWxkIHVzZSB0aGUgZm9sbG93
aW5nIGZ1bmN0aW9ucyBkaXJlY3RseS4KIGNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5j
b2RpbmdOYW1lKGNvbnN0IGNoYXIqIGFsaWFzKTsKLWNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxU
ZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOworY29uc3QgY2hhciogYXRvbUNhbm9uaWNh
bFRleHRFbmNvZGluZ05hbWUoU3RyaW5nVmlldyk7CiBib29sIG5vRXh0ZW5kZWRUZXh0RW5jb2Rp
bmdOYW1lVXNlZCgpOwogYm9vbCBpc0phcGFuZXNlRW5jb2RpbmcoY29uc3QgY2hhciogY2Fub25p
Y2FsRW5jb2RpbmdOYW1lKTsKIGJvb2wgc2hvdWxkU2hvd0JhY2tzbGFzaEFzQ3VycmVuY3lTeW1i
b2xJbihjb25zdCBjaGFyKiBjYW5vbmljYWxFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYWNmNGZmOWIxODhmZjZiZTYyODQx
MjVkMzg5MTA2NTg0YWM5MjQyMC4uZjc5MzNiYmVmOGJiZGY0NDM0Y2U2MjgyN2VjNDBiODA5Mzg4
ZGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBA
IC0zNjIsNyArMzYyLDcgQEAgYm9vbCBGaWxlUmVhZGVyTG9hZGVyOjppc0NvbXBsZXRlZCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fYnl0ZXNMb2FkZWQgPT0gbV90b3RhbEJ5dGVzOwogfQogCi12b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCit2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnNldEVuY29kaW5nKFN0cmluZ1ZpZXcgZW5jb2RpbmcpCiB7
CiAgICAgaWYgKCFlbmNvZGluZy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZW5jb2RpbmcgPSBQQUw6
OlRleHRFbmNvZGluZyhlbmNvZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5oCmluZGV4IDljYzVjZWM1YmFjNGY1NTEwMzMzZDI2MGFmMjE2MzM5MjQ2NzEzMzgu
LmIwNzMxODg1MjY3ZTk3ZWFlMGZhOGRmMjcyMjU5MDcwOTY3ZTVhMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9
CiAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yQ29kZTsgfQogCi0gICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldEVuY29kaW5nKFN0cmluZ1ZpZXcpOwogICAgIHZvaWQgc2V0RGF0YVR5
cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgeyBtX2RhdGFUeXBlID0gZGF0YVR5cGU7IH0KIAog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgeyByZXR1cm4gbV91cmxGb3JSZWFkaW5nOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcApp
bmRleCAwYTVlZDc4ZjQ1OGY5OWI2YmM3ZmMzNzFkZjk0Y2ZlOTI1YTRkNDgwLi4wMzliZjlhYjhh
YzJjNTk1MTU2NWM2NGYyYzIyZGVhMTY2N2NjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCBQQUw6OlRleHRFbmNvZGluZyBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmVuY29kaW5nRnJv
bU1ldGFBdHRyaWJ1dGVzKGNvbnN0IEF0dHJpYgogICAgIH0KIAogICAgIGlmIChtb2RlID09IENo
YXJzZXQgfHwgKG1vZGUgPT0gUHJhZ21hICYmIGdvdFByYWdtYSkpCi0gICAgICAgIHJldHVybiBQ
QUw6OlRleHRFbmNvZGluZyhzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoY2hhcnNl
dC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIFBBTDo6VGV4dEVu
Y29kaW5nKGNoYXJzZXQuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhp
c0hUTUxTcGFjZTxVQ2hhcj4pKTsKIAogICAgIHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggNzAyNjA3ODgw
YTA1OTIxMzQxZDQxMWZkZDNmZmM4OTRlMDEzMjlkMi4uNmU2MjZmODQ0OWM1NTBkMjhlZjRlNjQ3
ZjE3NjAxMDFiY2ExM2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIFBBTDo6VGV4dEVuY29kaW5nIGVuY29kaW5n
RnJvbUFjY2VwdENoYXJzZXQoY29uc3QgU3RyaW5nJiBhY2NlcHRDaGFyc2V0LAogICAgIFN0cmlu
ZyBub3JtYWxpemVkQWNjZXB0Q2hhcnNldCA9IGFjY2VwdENoYXJzZXQ7CiAgICAgbm9ybWFsaXpl
ZEFjY2VwdENoYXJzZXQucmVwbGFjZSgnLCcsICcgJyk7CiAKLSAgICBmb3IgKGF1dG8mIGNoYXJz
ZXQgOiBub3JtYWxpemVkQWNjZXB0Q2hhcnNldC5zcGxpdCgnICcpKSB7CisgICAgZm9yIChhdXRv
IGNoYXJzZXQgOiBTdHJpbmdWaWV3IHsgbm9ybWFsaXplZEFjY2VwdENoYXJzZXQgfS5zcGxpdCgn
ICcpKSB7CiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIGVuY29kaW5nKGNoYXJzZXQpOwogICAg
ICAgICBpZiAoZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5j
cHAKaW5kZXggN2M0ZjQ3ZTNkMzBhNGQwNjYyODMwZmRhMjFhY2E5OWEzZDFlZmZmMC4uM2FkMzc5
OTI5MWQxN2FkZmUyM2EyNDYxNzgyNTJjMGQ2OThmMmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4KCkuZGF0
YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250ZW50X3R5
cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7CiAgICAg
ICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRlbnRUeXBlLmdldCgpIH07Ci0gICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlwZUZyb21N
ZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGRhdGFT
aXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSB9Owor
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlNRVR5cGVG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihk
YXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0cmluZyku
dG9TdHJpbmcoKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwog
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICByZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBjb250
ZW50VHlwZVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwCmluZGV4IGU3YjM3M2JlNGM0ZGIzMDc5NmQ3NzU1YjI2ZDE5ZDYyYTAzZmEy
OTMuLjM3MTM0ZDlhNGZlNTA2YzhlNDg5ZTAzOTRjNjIxYmU1ODlhYzUyZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zOTQsNyAr
Mzk0LDcgQEAgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpCiAgICAgcmV0dXJuIG1lZGlhVHlwZS5zdWJzdHJpbmcodHlwZVN0YXJ0LCB0
eXBlRW5kIC0gdHlwZVN0YXJ0KTsKIH0KIAotU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK1N0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKFN0cmluZ1ZpZXcgbWVkaWFUeXBlKQogewogICAgIHVuc2lnbmVkIGNoYXJz
ZXRQb3MgPSAwLCBjaGFyc2V0TGVuID0gMDsKICAgICBzaXplX3QgcG9zID0gMDsKQEAgLTQwOCw3
ICs0MDgsNyBAQCBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKQogICAgICAgICB9CiAKICAgICAgICAgLy8gaXMgd2hhdCB3ZSBmb3VuZCBh
IGJlZ2lubmluZyBvZiBhIHdvcmQ/Ci0gICAgICAgIGlmIChtZWRpYVR5cGVbcG9zLTFdID4gJyAn
ICYmIG1lZGlhVHlwZVtwb3MtMV0gIT0gJzsnKSB7CisgICAgICAgIGlmIChtZWRpYVR5cGVbcG9z
IC0gMV0gPiAnICcgJiYgbWVkaWFUeXBlW3BvcyAtIDFdICE9ICc7JykgewogICAgICAgICAgICAg
cG9zICs9IDc7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNDE2LDE4ICs0
MTYsMjEgQEAgU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSkKICAgICAgICAgcG9zICs9IDc7CiAKICAgICAgICAgLy8gc2tpcCB3aGl0ZXNw
YWNlCi0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIG1lZGlhVHlwZVtwb3NdIDw9ICcg
JykKKyAgICAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCAmJiBtZWRpYVR5cGVbcG9zXSA8PSAnICcp
CiAgICAgICAgICAgICArK3BvczsKIAorICAgICAgICBpZiAocG9zID49IGxlbmd0aCkKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGlmIChtZWRpYVR5cGVbcG9zKytdICE9ICc9JykgLy8g
dGhpcyAiY2hhcnNldCIgc3Vic3RyaW5nIHdhc24ndCBhIHBhcmFtZXRlciBuYW1lLCBidXQgdGhl
cmUgbWF5IGJlIG90aGVycwogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgd2hpbGUg
KHBvcyAhPSBsZW5ndGggJiYgKG1lZGlhVHlwZVtwb3NdIDw9ICcgJyB8fCBtZWRpYVR5cGVbcG9z
XSA9PSAnIicgfHwgbWVkaWFUeXBlW3Bvc10gPT0gJ1wnJykpCisgICAgICAgIHdoaWxlIChwb3Mg
PCBsZW5ndGggJiYgKG1lZGlhVHlwZVtwb3NdIDw9ICcgJyB8fCBtZWRpYVR5cGVbcG9zXSA9PSAn
IicgfHwgbWVkaWFUeXBlW3Bvc10gPT0gJ1wnJykpCiAgICAgICAgICAgICArK3BvczsKIAogICAg
ICAgICAvLyB3ZSBkb24ndCBoYW5kbGUgc3BhY2VzIHdpdGhpbiBxdW90ZWQgcGFyYW1ldGVyIHZh
bHVlcywgYmVjYXVzZSBjaGFyc2V0IG5hbWVzIGNhbm5vdCBoYXZlIGFueQogICAgICAgICB1bnNp
Z25lZCBlbmRwb3MgPSBwb3M7Ci0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIG1lZGlh
VHlwZVtlbmRwb3NdID4gJyAnICYmIG1lZGlhVHlwZVtlbmRwb3NdICE9ICciJyAmJiBtZWRpYVR5
cGVbZW5kcG9zXSAhPSAnXCcnICYmIG1lZGlhVHlwZVtlbmRwb3NdICE9ICc7JykKKyAgICAgICAg
d2hpbGUgKGVuZHBvcyA8IGxlbmd0aCAmJiBtZWRpYVR5cGVbZW5kcG9zXSA+ICcgJyAmJiBtZWRp
YVR5cGVbZW5kcG9zXSAhPSAnIicgJiYgbWVkaWFUeXBlW2VuZHBvc10gIT0gJ1wnJyAmJiBtZWRp
YVR5cGVbZW5kcG9zXSAhPSAnOycpCiAgICAgICAgICAgICArK2VuZHBvczsKIAogICAgICAgICBj
aGFyc2V0UG9zID0gcG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5oCmluZGV4IDkyMGE1YTViNjE0YzljMWY4OTc0Y2VmMjVjMTI2Yjk3N2JlZjZjZDku
LjA1MjhjMDI5MDBiNmMxYzY3YTE3YjFiYTU2MzAxMGY4MTJmNzVjMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTgxLDcgKzgxLDcgQEAg
Ym9vbCBpc1ZhbGlkSFRUUFRva2VuKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBmaWxlbmFtZUZyb21IVFRQ
Q29udGVudERpc3Bvc2l0aW9uKFN0cmluZ1ZpZXcpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZXh0cmFj
dENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOworU3RyaW5nVmlldyBleHRyYWN0
Q2hhcnNldEZyb21NZWRpYVR5cGUoU3RyaW5nVmlldyk7CiBYU1NQcm90ZWN0aW9uRGlzcG9zaXRp
b24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcm
IGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0
VVJMKTsKIEF0b21TdHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShj
b25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbiBw
YXJzZVhGcmFtZU9wdGlvbnNIZWFkZXIoU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBh
N2ExNTI3Yzg2YWEzYzVmMGQyZTViYTBkMWRiMDMwNDUyYWY1ZjUzLi5jMGJjMzU2MjcxODZiNGQ2
NjM4MTQ1ODY3OTI3MzRmNTUxNTYyZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVu
dExlbmd0aChjb250ZW50TGVuZ3RoKTsgLy8gLTEgb24gcGFyc2UgZXJyb3Igb3IgbnVsbAogCiAg
ICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShyZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwotICAg
IHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7
CisgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRp
YVR5cGUocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlw
ZSkpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGYWlsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggZGVhMGRhYzRiZDAwMmRlODlkYzgyMDNiODA0Yzc2MmE1
YmYxNDdiNy4uNjIzN2ZiOTQwZTliMWZjMWVjOTVlYzQwNjJjNDBkODlkY2NmNzEwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTUzOCwxNCArNTM4LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmhhbmRsZURhdGFVUkwoKQogICAgICAgICBtZWRpYVR5cGUgPSAidGV4dC9wbGFpbiJfczsK
IAogICAgIFN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobWVk
aWFUeXBlKTsKLSAgICBTdHJpbmcgY2hhcnNldCA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlw
ZShtZWRpYVR5cGUpOworICAgIFN0cmluZ1ZpZXcgY2hhcnNldCA9IGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShtZWRpYVR5cGUpOwogCiAgICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKQogICAg
ICAgICBjaGFyc2V0ID0gIlVTLUFTQ0lJIl9zOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0gICAgcmVzcG9uc2Uu
c2V0VGV4dEVuY29kaW5nTmFtZShjaGFyc2V0KTsKKyAgICByZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKGNoYXJzZXQudG9TdHJpbmcoKSk7CiAgICAgcmVzcG9uc2Uuc2V0VVJMKGQtPm1fZmly
c3RSZXF1ZXN0LnVybCgpKTsKIAogICAgIGlmIChiYXNlNjQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1
cmwuY3BwCmluZGV4IDViZjhkNjgwMTFjMjgzMDQ3OGMwNzYzMTgzZGQ2ODkyMzI3NWZkNmUuLjI5
MzFkMDVkNGMyOWEzZDY5NzBjOWY3YWQ3ZmMwZjk2ZGM3NTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9u
c2VDdXJsLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNl
UmVzcG9uc2UoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9CiAKICAgICBzZXRN
aW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKLSAg
ICBzZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShodHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOworICAgIHNldFRleHRFbmNv
ZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS50b1N0cmluZygpKTsKICAgICBzZXRTb3VyY2UoUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291
cC5jcHAKaW5kZXggODg4ZGI3ZDhmMzM5MjhkZjZmNmNmOTk3NjkxZGRmMjhmNWMyNjA1MS4uMzJl
MDAyODU1Njk0NjMyYTAyNzc0MDkxNDU0M2Y3NzM1NzU3MWYwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25z
ZVNvdXAuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVz
cG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBjb25zdCBDU3RyaW5nJiBzbmlmCiAgICAg
c2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwog
ICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBf
U1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygpKSk7Ci0gICAgc2V0VGV4
dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
KyAgICBzZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250
ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAKICAgICBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc291
cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlc3BvbnNlSGVhZGVycykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDE1NGY3NjVjODA1MzFl
NDQwMGM4MTcwNDFhMDM5MjQ1NTBkNzY5Ni4uYzA5ZTk0MTEwNjhhNDM1ZWExZWRkNDUzN2RiZWI0
MGZjMjBkN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC05OTQs
OSArOTk0LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZERlY29kZVJlc3BvbnNlKFhNTEh0
dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGUgdHlwZSkKIC8vIGh0dHBzOi8veGhyLnNwZWMud2hhdHdn
Lm9yZy8jZmluYWwtY2hhcnNldAogUEFMOjpUZXh0RW5jb2RpbmcgWE1MSHR0cFJlcXVlc3Q6OmZp
bmFsUmVzcG9uc2VDaGFyc2V0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbGFiZWwgPSBtX3Jlc3Bv
bnNlRW5jb2Rpbmc7CisgICAgU3RyaW5nVmlldyBsYWJlbCA9IG1fcmVzcG9uc2VFbmNvZGluZzsK
IAotICAgIFN0cmluZyBvdmVycmlkZVJlc3BvbnNlQ2hhcnNldCA9IGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUpOworICAgIFN0cmluZ1ZpZXcgb3ZlcnJpZGVS
ZXNwb25zZUNoYXJzZXQgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobGFiZWwpOwogICAg
IGlmICghb3ZlcnJpZGVSZXNwb25zZUNoYXJzZXQuaXNFbXB0eSgpKQogICAgICAgICBsYWJlbCA9
IG92ZXJyaWRlUmVzcG9uc2VDaGFyc2V0OwogCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNFSVZFRCk7CiAKICAgICBpZiAoIW1fbWlt
ZVR5cGVPdmVycmlkZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IGV4
dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUpOworICAgICAgICBt
X3Jlc3BvbnNlRW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9taW1lVHlw
ZU92ZXJyaWRlKS50b1N0cmluZygpOwogICAgIGlmIChtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0
eSgpKQogICAgICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBtX3Jlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGFlZjMxMjU0MmY4NmYxNTg0NTk3Njgx
OTkxMGEzYTVhYTBiZDM5MjAuLjFmMGI3ZTRlOTllY2QzMGQ4NWViNjU2Mjg4YjU2M2Q0MjM5MGNk
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYm
IGlucHV0U3RyZWFtCiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0
cmVhbV9nZXRfaGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKICAgICBTdHJp
bmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJD
b250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fZmly
c3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KSwKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRl
cnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0
Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLnRvU3RyaW5nKCkpOwogICAgIG1fcmVz
cG9uc2UudXBkYXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyhoZWFkZXJzKTsKICAgICBkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhHRmlsZUluZm8qIGluZm8pCiAgICAgfSBl
bHNlIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsgZ19maWxlX2luZm9fZ2V0X2NvbnRl
bnRfdHlwZShpbmZvKSB9OwogICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKLSAgICAgICAgbV9yZXNwb25zZS5z
ZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlw
ZSkpOworICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJz
ZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKS50b1N0cmluZygpKTsKICAgICAgICAgaWYgKG1f
cmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNl
dE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aChtX3Jlc3BvbnNlLnVy
bCgpLnBhdGgoKS50b1N0cmluZygpKSk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRD
b250ZW50TGVuZ3RoKGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8pKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggMGMzZTJiN2VhOGNlMjA5NTY4N2RjMzllY2U4YzQ3NTc3YTA4ZjExOS4uY2Yy
MDE3YWFlZGM1ZjdhNDg2MTc5YjFjMzhkMDQzY2VmMjNiMjM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgIGlm
ICghcHJpdi0+Ynl0ZXNSZWFkKSB7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSB7IHdlYktp
dFVSSVNjaGVtZVJlc3BvbnNlR2V0Q29udGVudFR5cGUocmVzcCkuZGF0YSgpIH07CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBl
eHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwgd2ViS2l0VVJJU2NoZW1l
UmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBy
ZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZSkpOworICAgICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAgICAgICAg
IGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2UgPSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdl
dFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAgIGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456969</attachid>
            <date>2022-04-07 14:32:05 -0700</date>
            <delta_ts>2022-04-07 19:31:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238905-20220407143204.patch</filename>
            <type>text/plain</type>
            <size>24581</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAyZDBiM2I5Y2U1NmQy
NmU5YTQ3NWE5MTkzM2Y3NWFiZGY4ZmVhMi4uNmY4ZGJmYzVkYzQwNmNhNTYwMGI1MjU2MzRiMTc2
ZmEwMGRjMTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTA0LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBBTDo6VGV4dEVuY29k
aW5nKCkgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBpbiBhIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODkwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHNvbWUgY2FsbCBz
aXRlcyB0byBiZSBhIGJpdCBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpj
cmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyk6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFD
aGFyc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNl
cjo6ZW5jb2RpbmdGcm9tTWV0YUF0dHJpYnV0ZXMpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGluZ0Zyb21BY2NlcHRDaGFyc2V0
KToKKyAgICAgICAgKiBsb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dENoYXJzZXRGcm9tTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21D
YWNoZWRIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9u
c2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNl
UmVzcG9uc2UpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZmluYWxSZXNwb25zZUNoYXJzZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKwogMjAyMi0w
NC0wNyAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYIElU
TTogQVJJQVRyZWVJdGVtQ29udGVudCwgQVJJQVRyZWVSb3dzLCBhbmQgRGlzY2xvc2VkUm93cyBw
cm9wZXJ0aWVzIG5lZWQgdG8gYmUgdXBkYXRlZCBhZnRlciBkeW5hbWljIHBhZ2UgY2hhbmdlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZGQ1MmQ5N2I2M2M5YmY3ZGRmYWVjOTMwMDRkZTMwMThlY2I1
MjhjMi4uNjY0YTA2NTc2YTAzMzdlZjA0MzM5ZjQ0OGQzNTkzNjJiNDZiMGNkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgUEFMOjpUZXh0RW5jb2RpbmcoKSBjb25zdHJ1
Y3RvciB0aGF0IHRha2VzIGluIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBhbGxvd3Mgc29tZSBjYWxsIHNpdGVzIHRvIGJlIGEg
Yml0IG1vcmUgZWZmaWNpZW50LgorCisgICAgICAgICogcGFsL3RleHQvVGV4dEVuY29kaW5nLmNw
cDoKKyAgICAgICAgKFBBTDo6VGV4dEVuY29kaW5nOjpUZXh0RW5jb2RpbmcpOgorICAgICAgICAq
IHBhbC90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoUEFMOjpUZXh0RW5jb2Rpbmc6OlRl
eHRFbmNvZGluZyk6CisgICAgICAgICogcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoUEFMOjphdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAg
ICogcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaDoKKwogMjAyMi0wNC0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJp
bmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29u
c3QgY2hhciopIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU4YzZhNmVmNTE1MmUyMGJkY2E4Y2RmYTdk
MWNkOWZiOTU3OTE0MzEuLjlhMjljZTE3YThhNjM0NDllYTA0MTY5NmYwN2QyNTViNmQ1NWIyNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgUEFMOjpUZXh0RW5jb2RpbmcoKSBjb25zdHJ1
Y3RvciB0aGF0IHRha2VzIGluIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBhbGxvd3Mgc29tZSBjYWxsIHNpdGVzIHRvIGJlIGEg
Yml0IG1vcmUgZWZmaWNpZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291
cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
U291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RS
ZWFkQ2FsbGJhY2spOgorCiAyMDIyLTA0LTA3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXUF0gQmxvY2sga2VybmVsIHJvdXRpbmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCAyZmIw
NWEzOTdhMDI1MjI5YmUzOWI3ZjJjZmIzOWExOTg4NTgyMjllLi5iNjQ2MjY1ZmNlNTRjODdiNTkz
YWM2YjY0YjNjYjVkNmEwMzdiZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8
RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjbwogICAgIHItPm1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsKICAgICBhdXRvIG1p
bWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CiAgICAg
ci0+bV9pbnRlcm5hbFJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlLmlzRW1wdHkoKSA/IGRl
ZmF1bHRNSU1FVHlwZSgpIDogbWltZVR5cGUpOwotICAgIHItPm1faW50ZXJuYWxSZXNwb25zZS5z
ZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlw
ZSkpOworICAgIHItPm1faW50ZXJuYWxSZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAKICAgICBy
LT5tX2ludGVybmFsUmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKICAgICByLT5t
X2ludGVybmFsUmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmluZGV4IDRlMDIxMDNhZGNh
NTgyYWJiMzNjMDVhOWU3YmZhOTk4YTI1Yjg2MmUuLjViZDU0MmRiYmNmMzViZWI2YzczNDlmYWY2
ODgwMjNlNDc3ZTM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9U
ZXh0RW5jb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5j
b2RpbmcuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiB9CiAKLVRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK1RleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICA6IG1fbmFtZShhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShuYW1lKSkKICAg
ICAsIG1fYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbChiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9s
KCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXgg
ZjQ2NjRjOTFlYTQzNWVhNWNkZGI5OTFjZmNkMjI0Nzc2YjJjYjE3Zi4uODBkYzE4MzRkZWQwZjJm
Mjg4YjZkMWMwNzcyNmRiZGVmMTJiMWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4
dC9UZXh0RW5jb2RpbmcuaApAQCAtMzcsNyArMzcsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nIDog
cHVibGljIFdURjo6VVJMVGV4dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICBUZXh0RW5jb2Rpbmco
KSA9IGRlZmF1bHQ7CiAgICAgUEFMX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFt
ZSk7Ci0gICAgUEFMX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICBQQUxfRVhQT1JUIFRleHRFbmNvZGluZyhTdHJpbmdWaWV3IG5hbWUpOworCisgICAgVGV4dEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBUZXh0RW5jb2RpbmcoU3RyaW5n
VmlldyB7IG5hbWUgfSkKKyAgICB7CisgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRF
bmNvZGluZ1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggZDFiYTA4NGYxY2JiZTUwMjQ3OWE1NjRkMjFiNWY4YTc0
MzkzODA3Yy4uNGJlMzIzYzg4M2ZjMTljYzBhZTU4YThkZjkxMmU2NDZmZjYwMzA1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnku
Y3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIGNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW0KICAgICByZXR1
cm4gYXRvbUNhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUoYnVmZmVyKTsKIH0KIAotY29uc3QgY2hh
ciogYXRvbUNhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBhbGlhcykKK2Nv
bnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKFN0cmluZ1ZpZXcgYWxpYXMp
CiB7CiAgICAgaWYgKGFsaWFzLmlzRW1wdHkoKSB8fCAhYWxpYXMuaXNBbGxBU0NJSSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmgKaW5kZXggZDFhZGJlNWYwZjM0MjE5MThkMzQxOThjOGQ3
YzczNGY3ZWE5NWY5MS4uOGY0NGE1NzIwZDY1MDJlYjRmZGNlMWRkODg3MzUzNzk0ODYzNGM0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lz
dHJ5LmgKQEAgLTQzLDcgKzQzLDcgQEAgUEFMX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENv
ZGVjPiBuZXdUZXh0Q29kZWMoY29uc3QgVGV4dEVuY29kaW5nJik7CiAKIC8vIE9ubHkgVGV4dEVu
Y29kaW5nIHNob3VsZCB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZGlyZWN0bHkuCiBjb25z
dCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBhbGlhcyk7
Ci1jb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcm
KTsKK2NvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKFN0cmluZ1ZpZXcp
OwogYm9vbCBub0V4dGVuZGVkVGV4dEVuY29kaW5nTmFtZVVzZWQoKTsKIGJvb2wgaXNKYXBhbmVz
ZUVuY29kaW5nKGNvbnN0IGNoYXIqIGNhbm9uaWNhbEVuY29kaW5nTmFtZSk7CiBib29sIHNob3Vs
ZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciogY2Fub25pY2FsRW5j
b2RpbmdOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CmluZGV4IGFjZjRmZjliMTg4ZmY2YmU2Mjg0MTI1ZDM4OTEwNjU4NGFjOTI0MjAuLmY3OTMzYmJl
ZjhiYmRmNDQzNGNlNjI4MjdlYzQwYjgwOTM4OGRjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgRmlsZVJl
YWRlckxvYWRlcjo6aXNDb21wbGV0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2J5dGVzTG9hZGVk
ID09IG1fdG90YWxCeXRlczsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNv
ZGluZyhTdHJpbmdWaWV3IGVuY29kaW5nKQogewogICAgIGlmICghZW5jb2RpbmcuaXNFbXB0eSgp
KQogICAgICAgICBtX2VuY29kaW5nID0gUEFMOjpUZXh0RW5jb2RpbmcoZW5jb2RpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA5Y2M1Y2VjNWJhYzRm
NTUxMDMzM2QyNjBhZjIxNjMzOTI0NjcxMzM4Li5iMDczMTg4NTI2N2U5N2VhZTBmYThkZjI3MjI1
OTA3MDk2N2U1YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
Q29kZT4gZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAotICAgIHZv
aWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRFbmNvZGluZyhTdHJp
bmdWaWV3KTsKICAgICB2b2lkIHNldERhdGFUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpIHsg
bV9kYXRhVHlwZSA9IGRhdGFUeXBlOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIHsgcmV0dXJu
IG1fdXJsRm9yUmVhZGluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggMGE1ZWQ3OGY0NThmOTliNmJjN2ZjMzcx
ZGY5NGNmZTkyNWE0ZDQ4MC4uMDM5YmY5YWI4YWMyYzU5NTE1NjVjNjRmMmMyMmRlYTE2NjdjYzgy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJz
ZXRQYXJzZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgUEFMOjpUZXh0RW5jb2RpbmcgSFRNTE1l
dGFDaGFyc2V0UGFyc2VyOjplbmNvZGluZ0Zyb21NZXRhQXR0cmlidXRlcyhjb25zdCBBdHRyaWIK
ICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBDaGFyc2V0IHx8IChtb2RlID09IFByYWdtYSAmJiBn
b3RQcmFnbWEpKQotICAgICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2Rpbmcoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNoYXJzZXQudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSk7
CisgICAgICAgIHJldHVybiBQQUw6OlRleHRFbmNvZGluZyhjaGFyc2V0LnN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KSk7CiAKICAgICBy
ZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCmluZGV4IDcwMjYwNzg4MGEwNTkyMTM0MWQ0MTFmZGQzZmZjODk0ZTAxMzI5
ZDIuLjZlNjI2Zjg0NDljNTUwZDI4ZWY0ZTY0N2YxNzYwMTAxYmNhMTNjNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRp
YyBQQUw6OlRleHRFbmNvZGluZyBlbmNvZGluZ0Zyb21BY2NlcHRDaGFyc2V0KGNvbnN0IFN0cmlu
ZyYgYWNjZXB0Q2hhcnNldCwKICAgICBTdHJpbmcgbm9ybWFsaXplZEFjY2VwdENoYXJzZXQgPSBh
Y2NlcHRDaGFyc2V0OwogICAgIG5vcm1hbGl6ZWRBY2NlcHRDaGFyc2V0LnJlcGxhY2UoJywnLCAn
ICcpOwogCi0gICAgZm9yIChhdXRvJiBjaGFyc2V0IDogbm9ybWFsaXplZEFjY2VwdENoYXJzZXQu
c3BsaXQoJyAnKSkgeworICAgIGZvciAoYXV0byBjaGFyc2V0IDogU3RyaW5nVmlldyB7IG5vcm1h
bGl6ZWRBY2NlcHRDaGFyc2V0IH0uc3BsaXQoJyAnKSkgewogICAgICAgICBQQUw6OlRleHRFbmNv
ZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKICAgICAgICAgaWYgKGVuY29kaW5nLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIHJldHVybiBlbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCmluZGV4IDdjNGY0N2UzZDMwYTRkMDY2Mjgz
MGZkYTIxYWNhOTlhM2QxZWZmZjAuLjNhZDM3OTkyOTFkMTdhZGZlMjNhMjQ2MTc4MjUyYzBkNjk4
ZjJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9h
ZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2Fk
ZXJTb3VwLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jl
c291cmNlKCkKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlTmFtZShnX3BhdGhfZ2V0X2Jh
c2VuYW1lKHVybC5wYXRoKCkudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IGNvbnRlbnRUeXBlKGdfY29udGVudF90eXBlX2d1ZXNzKGZpbGVOYW1lLmdldCgpLCBkYXRh
LCBkYXRhU2l6ZSwgbnVsbHB0cikpOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcg
eyBjb250ZW50VHlwZS5nZXQoKSB9OwotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
IHsgdXJsLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwg
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZVN0cmluZykgfTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSB7IHVybCwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0cmlu
ZyksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLnRvU3RyaW5nKCkgfTsKICAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoIk9LIl9zKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5cGVTdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCBlN2IzNzNiZTRj
NGRiMzA3OTZkNzc1NWIyNmQxOWQ2MmEwM2ZhMjkzLi4zNzEzNGQ5YTRmZTUwNmM4ZTQ4OWUwMzk0
YzYyMWJlNTg5YWM1MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIFN0cmluZyBleHRyYWN0TUlNRVR5
cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogICAgIHJldHVybiBtZWRp
YVR5cGUuc3Vic3RyaW5nKHR5cGVTdGFydCwgdHlwZUVuZCAtIHR5cGVTdGFydCk7CiB9CiAKLVN0
cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUp
CitTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShTdHJpbmdWaWV3IG1lZGlh
VHlwZSkKIHsKICAgICB1bnNpZ25lZCBjaGFyc2V0UG9zID0gMCwgY2hhcnNldExlbiA9IDA7CiAg
ICAgc2l6ZV90IHBvcyA9IDA7CkBAIC00MDgsNyArNDA4LDcgQEAgU3RyaW5nIGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIGlzIHdoYXQgd2UgZm91bmQgYSBiZWdpbm5pbmcgb2YgYSB3b3JkPwotICAgICAg
ICBpZiAobWVkaWFUeXBlW3Bvcy0xXSA+ICcgJyAmJiBtZWRpYVR5cGVbcG9zLTFdICE9ICc7Jykg
eworICAgICAgICBpZiAobWVkaWFUeXBlW3BvcyAtIDFdID4gJyAnICYmIG1lZGlhVHlwZVtwb3Mg
LSAxXSAhPSAnOycpIHsKICAgICAgICAgICAgIHBvcyArPSA3OwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTQxNiwxOCArNDE2LDIxIEBAIFN0cmluZyBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiAgICAgICAgIHBvcyArPSA3
OwogCiAgICAgICAgIC8vIHNraXAgd2hpdGVzcGFjZQotICAgICAgICB3aGlsZSAocG9zICE9IGxl
bmd0aCAmJiBtZWRpYVR5cGVbcG9zXSA8PSAnICcpCisgICAgICAgIHdoaWxlIChwb3MgPCBsZW5n
dGggJiYgbWVkaWFUeXBlW3Bvc10gPD0gJyAnKQogICAgICAgICAgICAgKytwb3M7CiAKKyAgICAg
ICAgaWYgKHBvcyA+PSBsZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBpZiAo
bWVkaWFUeXBlW3BvcysrXSAhPSAnPScpIC8vIHRoaXMgImNoYXJzZXQiIHN1YnN0cmluZyB3YXNu
J3QgYSBwYXJhbWV0ZXIgbmFtZSwgYnV0IHRoZXJlIG1heSBiZSBvdGhlcnMKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIChtZWRpYVR5cGVb
cG9zXSA8PSAnICcgfHwgbWVkaWFUeXBlW3Bvc10gPT0gJyInIHx8IG1lZGlhVHlwZVtwb3NdID09
ICdcJycpKQorICAgICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoICYmIChtZWRpYVR5cGVbcG9zXSA8
PSAnICcgfHwgbWVkaWFUeXBlW3Bvc10gPT0gJyInIHx8IG1lZGlhVHlwZVtwb3NdID09ICdcJycp
KQogICAgICAgICAgICAgKytwb3M7CiAKICAgICAgICAgLy8gd2UgZG9uJ3QgaGFuZGxlIHNwYWNl
cyB3aXRoaW4gcXVvdGVkIHBhcmFtZXRlciB2YWx1ZXMsIGJlY2F1c2UgY2hhcnNldCBuYW1lcyBj
YW5ub3QgaGF2ZSBhbnkKICAgICAgICAgdW5zaWduZWQgZW5kcG9zID0gcG9zOwotICAgICAgICB3
aGlsZSAocG9zICE9IGxlbmd0aCAmJiBtZWRpYVR5cGVbZW5kcG9zXSA+ICcgJyAmJiBtZWRpYVR5
cGVbZW5kcG9zXSAhPSAnIicgJiYgbWVkaWFUeXBlW2VuZHBvc10gIT0gJ1wnJyAmJiBtZWRpYVR5
cGVbZW5kcG9zXSAhPSAnOycpCisgICAgICAgIHdoaWxlIChlbmRwb3MgPCBsZW5ndGggJiYgbWVk
aWFUeXBlW2VuZHBvc10gPiAnICcgJiYgbWVkaWFUeXBlW2VuZHBvc10gIT0gJyInICYmIG1lZGlh
VHlwZVtlbmRwb3NdICE9ICdcJycgJiYgbWVkaWFUeXBlW2VuZHBvc10gIT0gJzsnKQogICAgICAg
ICAgICAgKytlbmRwb3M7CiAKICAgICAgICAgY2hhcnNldFBvcyA9IHBvczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCA5MjBhNWE1YjYxNGM5
YzFmODk3NGNlZjI1YzEyNmI5NzdiZWY2Y2Q5Li4wNTI4YzAyOTAwYjZjMWM2N2ExN2IxYmE1NjMw
MTBmODEyZjc1YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5oCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihTdHJpbmdW
aWV3KTsKIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5n
Jik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihTdHJpbmdWaWV3
KTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYpOwotU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBT
dHJpbmcmKTsKK1N0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKFN0cmluZ1Zp
ZXcpOwogWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihj
b25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCB1bnNpZ25lZCYgZmFp
bHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCk7CiBBdG9tU3RyaW5nIGV4dHJhY3RSZWFz
b25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9S
VCBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKFN0cmlu
Z1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBiMzQxZjAyNDc3NzU1OGIzYWJlZDk1ZTdmOWNk
MTkxYTNjZWNiNzY1Li41YTgyN2ZiODZjZDM0ZTRlOGI0YjBiM2ZkZTU4ODk1NTg1NGI1NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmZyb21Dcm9zc1RocmVhZERhdGEoQ3Jvc3NUaHJlYWREYXRhJiYg
ZGF0CiAgICAgcmVzcG9uc2Uuc2V0VVJMKGRhdGEudXJsKTsKICAgICByZXNwb25zZS5zZXRNaW1l
VHlwZShkYXRhLm1pbWVUeXBlKTsKICAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGgoZGF0YS5leHBlY3RlZENvbnRlbnRMZW5ndGgpOwotICAgIHJlc3BvbnNlLnNldFRleHRFbmNv
ZGluZ05hbWUoZGF0YS50ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICByZXNwb25zZS5zZXRUZXh0RW5j
b2RpbmdOYW1lKFdURk1vdmUoZGF0YS50ZXh0RW5jb2RpbmdOYW1lKSk7CiAKICAgICByZXNwb25z
ZS5zZXRIVFRQU3RhdHVzQ29kZShkYXRhLmh0dHBTdGF0dXNDb2RlKTsKICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzVGV4dChkYXRhLmh0dHBTdGF0dXNUZXh0KTsKQEAgLTI3MywxMyArMjczLDEz
IEBAIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnRleHRFbmNvZGluZ05hbWUo
KSBjb25zdAogICAgIHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKFN0
cmluZyYmIGVuY29kaW5nTmFtZSkKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsK
ICAgICBtX2lzTnVsbCA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFRleHQgZW5jb2RpbmcgaXMg
ZGV0ZXJtaW5lZCBieSBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIuIFdlIHNob3VsZCB1cGRhdGUg
dGhlIGhlYWRlciwgc28gdGhhdCBpdCBkb2Vzbid0IGRpc2FncmVlIHdpdGggbV90ZXh0RW5jb2Rp
bmdOYW1lLgotICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IGVuY29kaW5nTmFtZTsKKyAgICBtX3Rl
eHRFbmNvZGluZ05hbWUgPSBXVEZNb3ZlKGVuY29kaW5nTmFtZSk7CiAKICAgICAvLyBGSVhNRTog
U2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBsYXRmb3JtIHJlc3BvbnNlIGlmIHByZXNlbnQu
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgKaW5kZXggYzRhY2M0Nzg0MDhkYzNjMzM2ZGNkNTIyYzRjZGFlMWNmZjcw
OWYyMy4uMTE2ZmQ5Y2JhYjE0ZTBiNTAxNTRiYzYzZDBjNzJiZDNiMjRlYTFlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dEVuY29kaW5n
TmFtZShTdHJpbmcmJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcAppbmRleCBhN2ExNTI3Yzg2YWEzYzVmMGQyZTViYTBkMWRiMDMwNDUyYWY1
ZjUzLi5jMGJjMzU2MjcxODZiNGQ2NjM4MTQ1ODY3OTI3MzRmNTUxNTYyZGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25z
ZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJlc3Bv
bnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsgLy8gLTEgb24gcGFy
c2UgZXJyb3Igb3IgbnVsbAogCiAgICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRUeXBlKSkpOwotICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFj
dENoYXJzZXRGcm9tTWVkaWFUeXBlKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUpKSk7CisgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShl
eHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIEN1cmxDYWNo
ZUVudHJ5OjpkaWRGYWlsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggZGVhMGRhYzRiZDAw
MmRlODlkYzgyMDNiODA0Yzc2MmE1YmYxNDdiNy4uNjIzN2ZiOTQwZTliMWZjMWVjOTVlYzQwNjJj
NDBkODlkY2NmNzEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTUzOCwxNCArNTM4LDE0
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRsZURhdGFVUkwoKQogICAgICAgICBtZWRpYVR5
cGUgPSAidGV4dC9wbGFpbiJfczsKIAogICAgIFN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobWVkaWFUeXBlKTsKLSAgICBTdHJpbmcgY2hhcnNldCA9IGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtZWRpYVR5cGUpOworICAgIFN0cmluZ1ZpZXcgY2hhcnNl
dCA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtZWRpYVR5cGUpOwogCiAgICAgaWYgKGNo
YXJzZXQuaXNFbXB0eSgpKQogICAgICAgICBjaGFyc2V0ID0gIlVTLUFTQ0lJIl9zOwogCiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1l
VHlwZSk7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShjaGFyc2V0KTsKKyAgICBy
ZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGNoYXJzZXQudG9TdHJpbmcoKSk7CiAgICAgcmVz
cG9uc2Uuc2V0VVJMKGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgpKTsKIAogICAgIGlmIChiYXNlNjQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDViZjhkNjgwMTFjMjgzMDQ3OGMwNzYz
MTgzZGQ2ODkyMzI3NWZkNmUuLjI5MzFkMDVkNGMyOWEzZDY5NzBjOWY3YWQ3ZmMwZjk2ZGM3NTIw
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlc3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlc291
cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICB9CiAKICAgICBzZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKLSAgICBzZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0
RnJvbU1lZGlhVHlwZShodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
KSkpOworICAgIHNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS50b1N0cmluZygp
KTsKICAgICBzZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggODg4ZGI3ZDhmMzM5MjhkZjZmNmNmOTk3
NjkxZGRmMjhmNWMyNjA1MS4uMzJlMDAyODU1Njk0NjMyYTAyNzc0MDkxNDU0M2Y3NzM1NzU3MWYw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFJlc291cmNl
UmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBjb25z
dCBDU3RyaW5nJiBzbmlmCiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0
dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWlt
ZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0
cmluZygpKSk7Ci0gICAgc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRp
YVR5cGUoY29udGVudFR5cGUpKTsKKyAgICBzZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkudG9TdHJpbmcoKSk7CiAKICAgICBzZXRFeHBl
Y3RlZENvbnRlbnRMZW5ndGgoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3Ro
KHJlc3BvbnNlSGVhZGVycykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggMDE1NGY3NjVjODA1MzFlNDQwMGM4MTcwNDFhMDM5MjQ1NTBkNzY5Ni4uYzA5ZTk0MTEw
NjhhNDM1ZWExZWRkNDUzN2RiZWI0MGZjMjBkN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC05OTQsOSArOTk0LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZERlY29kZVJlc3BvbnNlKFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGUgdHlwZSkKIC8vIGh0
dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jZmluYWwtY2hhcnNldAogUEFMOjpUZXh0RW5jb2Rp
bmcgWE1MSHR0cFJlcXVlc3Q6OmZpbmFsUmVzcG9uc2VDaGFyc2V0KCkgY29uc3QKIHsKLSAgICBT
dHJpbmcgbGFiZWwgPSBtX3Jlc3BvbnNlRW5jb2Rpbmc7CisgICAgU3RyaW5nVmlldyBsYWJlbCA9
IG1fcmVzcG9uc2VFbmNvZGluZzsKIAotICAgIFN0cmluZyBvdmVycmlkZVJlc3BvbnNlQ2hhcnNl
dCA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUpOworICAg
IFN0cmluZ1ZpZXcgb3ZlcnJpZGVSZXNwb25zZUNoYXJzZXQgPSBleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUobGFiZWwpOwogICAgIGlmICghb3ZlcnJpZGVSZXNwb25zZUNoYXJzZXQuaXNFbXB0
eSgpKQogICAgICAgICBsYWJlbCA9IG92ZXJyaWRlUmVzcG9uc2VDaGFyc2V0OwogCkBAIC0xMDQ2
LDcgKzEwNDYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNFSVZF
RCk7CiAKICAgICBpZiAoIW1fbWltZVR5cGVPdmVycmlkZS5pc0VtcHR5KCkpCi0gICAgICAgIG1f
cmVzcG9uc2VFbmNvZGluZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
T3ZlcnJpZGUpOworICAgICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUobV9taW1lVHlwZU92ZXJyaWRlKS50b1N0cmluZygpOwogICAgIGlmIChtX3Jl
c3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBt
X3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGFl
ZjMxMjU0MmY4NmYxNTg0NTk3NjgxOTkxMGEzYTVhYTBiZDM5MjAuLjFmMGI3ZTRlOTllY2QzMGQ4
NWViNjU2Mjg4YjU2M2Q0MjM5MGNkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTExMjksNyAr
MTEyOSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KEdS
ZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgYXV0byogaGVhZGVycyA9IHNv
dXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVycyhtX211bHRpcGFydElucHV0U3Ry
ZWFtLmdldCgpKTsKICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVy
c19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGUpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLnRv
U3RyaW5nKCkpOwogICAgIG1fcmVzcG9uc2UudXBkYXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyho
ZWFkZXJzKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpAQCAtMTY5Myw3
ICsxNjkzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhHRmls
ZUluZm8qIGluZm8pCiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
Z19maWxlX2luZm9fZ2V0X2NvbnRlbnRfdHlwZShpbmZvKSB9OwogICAgICAgICBtX3Jlc3BvbnNl
LnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
LSAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShjb250ZW50VHlwZSkpOworICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNv
ZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKS50b1N0cmlu
ZygpKTsKICAgICAgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yUGF0aChtX3Jlc3BvbnNlLnVybCgpLnBhdGgoKS50b1N0cmluZygpKSk7CiAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGdfZmlsZV9pbmZvX2dldF9zaXplKGlu
Zm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggMGMzZTJiN2VhOGNlMjA5NTY4N2RjMzll
Y2U4YzQ3NTc3YTA4ZjExOS4uY2YyMDE3YWFlZGM1ZjdhNDg2MTc5YjFjMzhkMDQzY2VmMjNiMjM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRT
dHJlYW0sIEdBc3luYwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7CiAgICAgICAgIFN0cmlu
ZyBjb250ZW50VHlwZSB7IHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0Q29udGVudFR5cGUocmVz
cCkuZGF0YSgpIH07CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocHJpdi0+dGFz
ay0+cmVxdWVzdCgpLnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRU
eXBlKSwgd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5
U3RyaW5nKCkpOwotICAgICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RD
aGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOworICAgICAgICByZXNwb25zZS5zZXRU
ZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSku
dG9TdHJpbmcoKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2UgPSB3ZWJL
aXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAgIGlmIChz
dGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZSgyMDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>