<?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>200614</bug_id>
          
          <creation_ts>2019-08-10 11:07:22 -0700</creation_ts>
          <short_desc>Replace multiparameter overloads of append() in StringBuilder as a first step toward standardizinging on the flexibleAppend() implementation</short_desc>
          <delta_ts>2019-08-13 09:39:52 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1560245</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-10 11:07:22 -0700</bug_when>
    <thetext>Replace multiparameter overloads of append() in StringBuilder as a first step toward standardizinging on the flexibleAppend() implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560271</commentid>
    <comment_count>1</comment_count>
      <attachid>376019</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-10 15:47:35 -0700</bug_when>
    <thetext>Created attachment 376019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560288</commentid>
    <comment_count>2</comment_count>
      <attachid>376024</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-10 17:16:17 -0700</bug_when>
    <thetext>Created attachment 376024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560289</commentid>
    <comment_count>3</comment_count>
      <attachid>376025</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-10 18:37:18 -0700</bug_when>
    <thetext>Created attachment 376025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560431</commentid>
    <comment_count>4</comment_count>
      <attachid>376025</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-12 09:49:42 -0700</bug_when>
    <thetext>Comment on attachment 376025
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Renames StringBuilder::append(const LChar*, unsigned), StringBuilder::append(const UChar*, unsigned) and 
&gt; +        StringBuilder::append(const char*, unsigned) to StringBuilder::appendCharacters(...).

Wow, I was taking a cut at this myself this weekend and I used the *same* names for the same functions!

&gt; Source/WTF/ChangeLog:16
&gt; +        * wtf/HexNumber.h:
&gt; +        (WTF::appendUnsignedAsHexFixedSize):
&gt; +        Add overload that explicitly takes a StringBuilder to work around rename from append to appendCharacters.

I took a different approach with this one. The caller that was using this with a Vector could use a StringBuilder instead, I think. Something we can mess with later.

&gt; Source/WTF/wtf/HexNumber.h:24
&gt; +#include &lt;wtf/text/StringBuilder.h&gt;

I think we could just do a forward declaration instead of including the entire header.

&gt; Source/WTF/wtf/text/StringBuilder.h:471
&gt; +    static void flush(LChar* characters, unsigned length, StringBuilder* stringBuilder) { stringBuilder-&gt;appendCharacters(characters, length); }

In my patch I had changed the first argument type to const LChar*.

&gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:237
&gt; -        builder.append(name, strlen(name));
&gt; +        builder.appendCharacters(name, strlen(name));

This can just be append(name) instead since that&apos;s what the &quot;const char*&quot; version does. I suspect it could also use flexibleAppend to do all four appends on one line.

&gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:239
&gt; +        builder.appendCharacters(value, strlen(value));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560432</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-12 09:51:03 -0700</bug_when>
    <thetext>I noticed some other differences between the string adapter behavior and overloads of String::append; the big one was append(UChar32) which from an overloading point of view is the same as append(int). So I decided that needs to be renamed, at least temporarily, to appendCharacter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560433</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-12 09:51:17 -0700</bug_when>
    <thetext>StringBuilder::append, I mean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560451</commentid>
    <comment_count>7</comment_count>
      <attachid>376025</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-12 10:07:01 -0700</bug_when>
    <thetext>Comment on attachment 376025
Patch

Rejecting attachment 376025 from commit-queue.

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

/Volumes/Data/EWS/WebKit/Source/WebKit/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/12898538</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560582</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-12 16:09:08 -0700</bug_when>
    <thetext>Committed r248552: &lt;https://trac.webkit.org/changeset/248552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560583</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 16:10:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/54231521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560584</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-12 16:12:06 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 376025 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376025&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        Renames StringBuilder::append(const LChar*, unsigned), StringBuilder::append(const UChar*, unsigned) and 
&gt; &gt; +        StringBuilder::append(const char*, unsigned) to StringBuilder::appendCharacters(...).
&gt; 
&gt; Wow, I was taking a cut at this myself this weekend and I used the *same*
&gt; names for the same functions!
&gt; 

!

&gt; &gt; Source/WTF/ChangeLog:16
&gt; &gt; +        * wtf/HexNumber.h:
&gt; &gt; +        (WTF::appendUnsignedAsHexFixedSize):
&gt; &gt; +        Add overload that explicitly takes a StringBuilder to work around rename from append to appendCharacters.
&gt; 
&gt; I took a different approach with this one. The caller that was using this
&gt; with a Vector could use a StringBuilder instead, I think. Something we can
&gt; mess with later.

Yeah, this might have been better. I was worried since it was a debugging thing that there might be some lldb scripts that depend on it returning a Vector, but I could have just converted to a Vector at the end.

&gt; 
&gt; &gt; Source/WTF/wtf/HexNumber.h:24
&gt; &gt; +#include &lt;wtf/text/StringBuilder.h&gt;
&gt; 
&gt; I think we could just do a forward declaration instead of including the
&gt; entire header.

No, it needed the #include due to inlining.

&gt; 
&gt; &gt; Source/WTF/wtf/text/StringBuilder.h:471
&gt; &gt; +    static void flush(LChar* characters, unsigned length, StringBuilder* stringBuilder) { stringBuilder-&gt;appendCharacters(characters, length); }
&gt; 
&gt; In my patch I had changed the first argument type to const LChar*.

I will do this in a follow up, but change all the flush() implementations at once. I didn&apos;t want to change just this one.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:237
&gt; &gt; -        builder.append(name, strlen(name));
&gt; &gt; +        builder.appendCharacters(name, strlen(name));
&gt; 
&gt; This can just be append(name) instead since that&apos;s what the &quot;const char*&quot;
&gt; version does. I suspect it could also use flexibleAppend to do all four
&gt; appends on one line.
&gt; 
&gt; &gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:239
&gt; &gt; +        builder.appendCharacters(value, strlen(value));
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560585</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 16:12:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/54231610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560586</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-12 16:13:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; I noticed some other differences between the string adapter behavior and
&gt; overloads of String::append; the big one was append(UChar32) which from an
&gt; overloading point of view is the same as append(int). So I decided that
&gt; needs to be renamed, at least temporarily, to appendCharacter.

Oh, good catch. I&apos;ll make that change. I am curious where in the code we are using UChar32, I guess I will find out soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560823</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 09:39:52 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; (In reply to Darin Adler from comment #5)
&gt; &gt; I noticed some other differences between the string adapter behavior and
&gt; &gt; overloads of String::append; the big one was append(UChar32) which from an
&gt; &gt; overloading point of view is the same as append(int). So I decided that
&gt; &gt; needs to be renamed, at least temporarily, to appendCharacter.
&gt; 
&gt; Oh, good catch. I&apos;ll make that change. I am curious where in the code we are
&gt; using UChar32, I guess I will find out soon.

https://bugs.webkit.org/show_bug.cgi?id=200675</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376019</attachid>
            <date>2019-08-10 15:47:35 -0700</date>
            <delta_ts>2019-08-10 17:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200614-20190810154734.patch</filename>
            <type>text/plain</type>
            <size>31312</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0
aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uZmlnRmlsZS5jcHA6
CisgICAgICAgIChKU0M6OkNvbmZpZ0ZpbGU6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6
TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2VDbGF1c2UpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTQsNyArODU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHJlcGxMZW4gPSByZXBsYWNlLmxlbmd0aCgpOwogICAgICAg
ICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQgfHwgcmVwbExlbikgewotICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0
LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRT
dWJzdHJpbmcoc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIHJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VtZW50LCByZXBsYWNlLCBzdHJpbmcsIG92ZWN0
b3IuZGF0YSgpLCByZWdFeHApOwpAQCAtODk5LDcgKzg5OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHN0cmluZ05vZGUpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHN0cmluZy5sZW5n
dGgoKSkKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nLCBsYXN0SW5k
ZXgsIHN0cmluZy5sZW5ndGgoKSAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgbGFzdEluZGV4LCBzdHJpbmcubGVuZ3RoKCkg
LSBsYXN0SW5kZXgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvTGF6eUpTQ29uc3RhbnQobV9ncmFwaCwgTGF6eUpTVmFsdWU6Om5ld1N0cmluZyht
X2dyYXBoLCBidWlsZGVyLnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgQ29uZmlnRmlsZTo6cGFyc2UoKQog
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnAgJiYgIWlzQVNDSUlTcGFjZSgqcCkgJiYgKnAg
IT0gJz0nKQogICAgICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG9wdGlvbk5hbWVTdGFydCwgcCAtIG9wdGlvbk5hbWVTdGFydCk7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhvcHRpb25OYW1l
U3RhcnQsIHAgLSBvcHRpb25OYW1lU3RhcnQpOwogCiAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgqcCAmJiBpc0FTQ0lJU3BhY2UoKnApICYmICpwICE9ICc9JykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHArKzsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENvbmZpZ0ZpbGU6OnBhcnNlKCkK
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmICFpc0FTQ0lJU3BhY2UoKnApKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG9wdGlvblZhbHVlU3RhcnQsIHAgLSBvcHRpb25WYWx1ZVN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG9wdGlvblZhbHVlU3RhcnQsIHAg
LSBvcHRpb25WYWx1ZVN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmIGlzQVNDSUlTcGFjZSgq
cCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMiwxMiArNjIyLDEyIEBA
IFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXIKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghbV9idWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgbV9idWlsZGVy
LmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwogCiBzbG93UGF0
aEJlZ2luOgogICAgICAgICBpZiAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciA8
IG1fZW5kICYmICptX3B0ciA9PSAnXFwnKSB7CiAgICAgICAgICAgICBpZiAobV9idWlsZGVyLmlz
RW1wdHkoKSAmJiBydW5TdGFydCA8IG1fcHRyKQotICAgICAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgICAgIG1fYnVp
bGRlci5hcHBlbmRDaGFyYWN0ZXJzKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAg
ICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIl9zOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25PdmVycmlkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAg
c3RhdGljIFN0cmluZyBwYXJzZUNsYXVzZShjb25zdCBjaGFyKiBrZQogICAgICAgICAgICAgaWYg
KHBbc3RybGVuKHRlcm1pbmF0b3IpXSAhPSAnXG4nKQogICAgICAgICAgICAgICAgIEZBSUxfV0lU
SF9FUlJPUihTWU5UQVhfRVJST1IsICgiVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyICciLCBr
ZXl3b3JkLCAiJyBjbGF1c2UgZW5kIGRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJzpcbiIsIGxp
bmUsICJcbiIpKTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgcCAtIGxpbmUg
KyAxKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhsaW5lLCBwIC0gbGlu
ZSArIDEpOwogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAg
fQogICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogd3RmL0hleE51bWJl
ci5oOgorICAgICAgICAoV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKToKKyAgICAg
ICAgQWRkIG92ZXJsb2FkIHRoYXQgZXhwbGljaXRseSB0YWtlcyBhIFN0cmluZ0J1aWxkZXIgdG8g
d29yayBhcm91bmQgcmVuYW1lIGZyb20gYXBwZW5kIHRvIGFwcGVuZENoYXJhY3RlcnMuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6
OmFwcGVuZCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5k
U3Vic3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCk6
CisgICAgICAgIChXVEY6OkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmdCdWls
ZGVyPjo6Zmx1c2gpOgorICAgICAgICBVcGRhdGUgZm9yIHJlbmFtZXMuCisKIDIwMTktMDgtMDkg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBEZXZp
cnR1YWxpemUgdGhlIEFTVApJbmRleDogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDI0ODQ5NSkKKysr
IFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTcyLDYgKzczLDE3IEBAIGlubGluZSB2b2lkIGFwcGVu
ZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUKICAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmZp
cnN0LCByZXN1bHQuc2Vjb25kKTsKIH0KIAorLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRv
IGFwcGVuZEhleC4KKy8vIFNhbWUgYXMgYXBwZW5kVW5zaWduZWRBc0hleCwgYnV0IHplcm8tcGFk
ZGluZyB0byBnZXQgYXQgbGVhc3QgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KK3RlbXBs
YXRlPHR5cGVuYW1lIE51bWJlclR5cGU+CitpbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKE51bWJlclR5cGUgbnVtYmVyLCBTdHJpbmdCdWlsZGVyJiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2Fz
ZSkKK3sKKyAgICAvLyBFYWNoIGJ5dGUgY2FuIGdlbmVyYXRlIHVwIHRvIHR3byBkaWdpdHMuCisg
ICAgc3RkOjphcnJheTxMQ2hhciwgc2l6ZW9mKE51bWJlclR5cGUpICogMj4gYnVmZmVyOworICAg
IGF1dG8gcmVzdWx0ID0gSW50ZXJuYWw6OmFwcGVuZEhleChidWZmZXIsIG51bWJlciwgbWluaW11
bURpZ2l0cywgbW9kZSk7CisgICAgZGVzdGluYXRpb24uYXBwZW5kQ2hhcmFjdGVycyhyZXN1bHQu
Zmlyc3QsIHJlc3VsdC5zZWNvbmQpOworfQorCiBzdHJ1Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAg
ICBzdGQ6OmFycmF5PExDaGFyLCAxNj4gY2hhcmFjdGVyczsKICAgICB1bnNpZ25lZCBsZW5ndGg7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMyw3ICszMDMsNyBAQCBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBl
bmRVbmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgU3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoIHx8IGhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KGNvbnN0IFVDaGFyKiAKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmICEoKmNoYXJhY3RlcnMg
JiB+MHhmZikpIHsKICAgICAgICAgICAgIC8vIEFwcGVuZCBhcyA4IGJpdCBjaGFyYWN0ZXIKICAg
ICAgICAgICAgIExDaGFyIGxDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KCpjaGFyYWN0ZXJzKTsK
LSAgICAgICAgICAgIHJldHVybiBhcHBlbmQoJmxDaGFyLCAxKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDaGFyYWN0ZXJzKCZsQ2hhciwgMSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
YWxjdWxhdGUgdGhlIG5ldyBzaXplIG9mIHRoZSBidWlsZGVyIGFmdGVyIGFwcGVuZGluZy4KQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
CiAgICAgQVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5z
aWduZWQ+KCkpOwogfQogCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRD
aGFyYWN0ZXJzKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFsZW5ndGggfHwgaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
ODMsNyArMzgzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQ0ZTdHJpbmdSZWYgcwog
ewogICAgIC8vIEZhc3QgcGF0aDogYXZvaWQgY29uc3RydWN0aW5nIGEgdGVtcG9yYXJ5IFN0cmlu
ZyB3aGVuIHBvc3NpYmxlLgogICAgIGlmIChhdXRvKiBjaGFyYWN0ZXJzID0gQ0ZTdHJpbmdHZXRD
U3RyaW5nUHRyKHN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEpKSB7Ci0gICAgICAg
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZykpOworICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3Ry
aW5nKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXBwZW5kKFN0cmluZyhzdHJpbmcp
KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsMTAgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT3Zl
cmZsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoLmhhc092ZXJmbG93ZWQoKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBjcmFzaGVzT25PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1f
bGVuZ3RoLnNob3VsZENyYXNoT25PdmVyZmxvdygpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZENoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBMQ2hh
ciosIHVuc2lnbmVkKTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpIHsgYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Y2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IEF0b21TdHJp
bmcmIGF0b21TdHJpbmcpCiAgICAgewpAQCAtOTYsOSArOTYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5kKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgYXBwZW5k
Q2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZ0J1aWxkZXImIG90aGVyKQpAQCAtMTIxLDE3ICsxMjEsMTcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG90aGVyLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5k
KG90aGVyLmNoYXJhY3RlcnM4KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAg
ICAgICAgIGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczgoKSwgb3RoZXIubV9sZW5n
dGgudW5zYWZlR2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQob3RoZXIu
Y2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAg
IGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVu
c2FmZUdldCgpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcpCiAgICAgewogICAgICAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKLSAgICAgICAgICAg
IGFwcGVuZChzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0
cmluZ1ZpZXcubGVuZ3RoKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQoc3Ry
aW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7CisgICAgICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcu
bGVuZ3RoKCkpOwogICAgIH0KIAogI2lmIFVTRShDRikKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoTlNTdHJpbmcgKnN0cmluZykgeyBhcHBlbmQoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZyk7IH0KICNlbmRpZgogICAgIAotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB2b2lkIGFwcGVuZFN1YnN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MCwxNSArMTUwLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAg
ICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5ndGgpOworICAg
ICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMo
c3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBpZiAoY2hh
cmFjdGVycykKLSAgICAgICAgICAgIGFwcGVuZChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVy
cykpOworICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBzdHJsZW4oY2hh
cmFjdGVycykpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKFVDaGFyIGMpCkBAIC0xNzksNyAr
MTc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBhcHBlbmQoJmMsIDEpOworICAgICAgICBhcHBlbmRDaGFyYWN0
ZXJzKCZjLCAxKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChMQ2hhciBjKQpAQCAtMTk0LDcg
KzE5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2J1ZmZlckNoYXJhY3RlcnMxNlts
ZW5ndGhdID0gYzsKICAgICAgICAgICAgIG1fbGVuZ3RoKys7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoJmMs
IDEpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZj
aGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIHsgYXBwZW5kKGNoYXJhY3RlcnMsIGNoYXJhY3Rl
ckNvdW50IC0gMSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kTGl0ZXJhbChjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMo
Y2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kTnVtYmVyKGludCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YXBwZW5kTnVtYmVyKHVuc2lnbmVkKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgCiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nQnVpbGRlcj4gewogICAgIHVzaW5nIFJldHVyblR5
cGUgPSB2b2lkOwogICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSBTdHJpbmdCdWls
ZGVyOwotICAgIHN0YXRpYyB2b2lkIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFN0cmluZ0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBw
ZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0KKyAgICBzdGF0aWMgdm9pZCBmbHVzaChMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdCdWlsZGVyKiBzdHJpbmdCdWlsZGVy
KSB7IHN0cmluZ0J1aWxkZXItPmFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzOCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3Ry
aW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhl
IGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKC4uLikuCisg
ICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHRvIAorICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKworICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaXRo
UmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0
aWVzSW50ZXJuYWwpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6YXBwZW5kVG9TdHJpbmdCdWls
ZGVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdp
dGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpidWZmZXJlZENoYXJh
Y3RlcnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50
ZWRTdHJpbmc6OlN1YnN0cmluZzo6YXBwZW5kVG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6
ZGVjb2RlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d3JpdGVUb1N0cmluZ0J1aWxkZXIpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NDYsNyArOTQ2LDcgQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhcnQgPSBub2RlID09ICZzdGFydENvbnRhaW5lcigpID8gc3RkOjptaW4obV9zdGFydC5v
ZmZzZXQoKSwgbGVuZ3RoKSA6IDBVOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gbm9kZSA9
PSAmZW5kQ29udGFpbmVyKCkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0
KCkpLCBsZW5ndGgpIDogbGVuZ3RoOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwg
c3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU3Vic3RyaW5n
KGRhdGEsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDcgKzQyMCw3
IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UoY28KICAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSBzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgcmViYWxhbmNlZFN0cmluZy5yZXNlcnZlQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAgICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCByZWJhbGFuY2VkU3Ry
aW5nLmxlbmd0aCgpLCBpIC0gcmViYWxhbmNlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJl
YmFsYW5jZWRTdHJpbmcuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgcmViYWxhbmNlZFN0cmluZy5s
ZW5ndGgoKSwgaSAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICByZWJhbGFu
Y2VkU3RyaW5nLmFwcGVuZChzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpOwogICAgIH0KIApA
QCAtNDI4LDcgKzQyOCw3IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2Uo
Y28KICAgICAgICAgcmV0dXJuIHN0cmluZzsKIAogICAgIHJlYmFsYW5jZWRTdHJpbmcucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCk7Ci0gICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCBy
ZWJhbGFuY2VkU3RyaW5nLmxlbmd0aCgpLCBsZW5ndGggLSByZWJhbGFuY2VkU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICByZWJhbGFuY2VkU3RyaW5nLmFwcGVuZFN1YnN0cmluZyhzdHJpbmcsIHJlYmFs
YW5jZWRTdHJpbmcubGVuZ3RoKCksIGxlbmd0aCAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkp
OwogICAgIHJldHVybiByZWJhbGFuY2VkU3RyaW5nLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFw
cGVuZENoYXJhY3RlcnNSZXBsYQogICAgICAgICBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlciA9IHRl
eHRbaV07CiAgICAgICAgIHVpbnQ4X3Qgc3Vic3RpdHV0aW9uID0gY2hhcmFjdGVyIDwgV1RGX0FS
UkFZX0xFTkdUSChlbnRpdHlNYXApID8gZW50aXR5TWFwW2NoYXJhY3Rlcl0gOiBzdGF0aWNfY2Fz
dDx1aW50OF90PihFbnRpdHlTdWJzdGl0dXRpb25OdWxsSW5kZXgpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoc3Vic3RpdHV0aW9uICE9IEVudGl0eVN1YnN0aXR1dGlvbk51bGxJbmRleCkgJiYgZW50
aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLm1hc2sgJiBlbnRpdHlNYXNrKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwg
aSAtIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
ZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0eVN1
YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoYXJhY3RlcnModGV4dCArIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5LCBpIC0gcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rl
cnMoZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0
eVN1YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOwogICAgICAgICAgICAgcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkgPSBpICsgMTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXN1
bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRp
b25BZnRlckxhc3RFbnRpdHkpOworICAgIHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXJzKHRleHQgKyBw
b3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRpb25BZnRlckxhc3RFbnRpdHkp
OwogfQogCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5n
RW50aXRpZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIEVudGl0eU1hc2sgZW50aXR5TWFzaykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0Ojph
cHBlbmRUb1MKICAgICBpZiAobV9zaW5nbGVDaGFyYWN0ZXIpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc2luZ2xlQ2hhcmFjdGVyKTsKICAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1fc3RyaW5nLCBtX29mZnNldCwgbV9sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZFN1
YnN0cmluZyhtX3N0cmluZywgbV9vZmZzZXQsIG1fbGVuZ3RoKTsKIH0KIAogLy8gLS0tLS0tLS0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDEzICs3MTcs
MTMgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZQogICAgICAgICAg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwogICAgICAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9
PSBub2RlICYmIGJyZWFrT2Zmc2V0IDw9IGxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChi
cmVha09mZnNldCA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoZGF0YSwgcG9zaXRpb24sIGJyZWFrT2Zmc2V0IC0gcG9zaXRpb24pOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kU3Vic3RyaW5nKGRhdGEsIHBvc2l0aW9uLCBicmVha09mZnNl
dCAtIHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBicmVha09mZnNl
dDsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5l
LCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRTdWJzdHJpbmcoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0
aW9uKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoYnJlYWtOb2RlID09IG5vZGUpCiAgICAg
ICAgICAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAJKHJl
dmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBTdHJpbmcgSFRNTFRv
a2VuaXplcjo6YnVmZmVyZWRDaGFyYWN0ZXJzCiAgICAgY2hhcmFjdGVycy5yZXNlcnZlQ2FwYWNp
dHkobnVtYmVyT2ZCdWZmZXJlZENoYXJhY3RlcnMoKSk7CiAgICAgY2hhcmFjdGVycy5hcHBlbmQo
JzwnKTsKICAgICBjaGFyYWN0ZXJzLmFwcGVuZCgnLycpOwotICAgIGNoYXJhY3RlcnMuYXBwZW5k
KG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEoKSwgbV90ZW1wb3JhcnlCdWZmZXIuc2l6ZSgpKTsKKyAg
ICBjaGFyYWN0ZXJzLmFwcGVuZENoYXJhY3RlcnMobV90ZW1wb3JhcnlCdWZmZXIuZGF0YSgpLCBt
X3RlbXBvcmFyeUJ1ZmZlci5zaXplKCkpOwogICAgIHJldHVybiBjaGFyYWN0ZXJzLnRvU3RyaW5n
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5h
dGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3
byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNj
b2duaXplZCB0aGlzIHN0cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciBoZWFkZXI7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0
YSkpLCBsZW5ndGgpOworICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoYXJhY3RlcnMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRI
ZWFkZXJEYXRhKSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBwZW5kKCJcblxuIik7
CiAKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJWVFQgaGVhZGVyICIsICZo
ZWFkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpT
dWJzdHJpbmc6OmFwcGVuZFRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YnVpbGRlci5hcHBlbmQoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7
CisgICAgYnVpbGRlci5hcHBlbmRTdWJzdHJpbmcoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBs
ZW5ndGgsIGxlbmd0aCk7CiB9CiAKIFNlZ21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3RyaW5nOjpv
cGVyYXRvcj0oU2VnbWVudGVkU3RyaW5nJiYgb3RoZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw3ICszMDcsNyBAQCBTdHJpbmcgVGV4dENvZGVjSUNVOjpkZWNvZGUoY29uc3Qg
Y2hhciogCiAKICAgICBkbyB7CiAgICAgICAgIGludCB1Y2hhcnNEZWNvZGVkID0gZGVjb2RlVG9C
dWZmZXIoYnVmZmVyLCBidWZmZXJMaW1pdCwgc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywg
Zmx1c2gsIGVycik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3RlcnMoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKICAgICB9IHdoaWxlIChlcnIgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwogCiAgICAg
aWYgKFVfRkFJTFVSRShlcnIpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAs
NyBAQCBzdGF0aWMgaW50IHdyaXRlVG9TdHJpbmdCdWlsZGVyKHZvaWQqIGNvCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICByZXN1bHRPdXRwdXQuYXBwZW5kKG91dHB1dEJ1ZmZlci5kYXRhKCksIG91
dHB1dE9mZnNldCk7CisgICAgcmVzdWx0T3V0cHV0LmFwcGVuZENoYXJhY3RlcnMob3V0cHV0QnVm
ZmVyLmRhdGEoKSwgb3V0cHV0T2Zmc2V0KTsKICAgICByZXR1cm4gaW5wdXRPZmZzZXQ7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTEwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92
ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWlsZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dh
cmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGlibGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0
CisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkKSBh
bmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQp
IHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAgCisgICAg
ICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlh
cnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94
UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6
CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lcy4KKwogMjAxOS0wOC0wOSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBHb29nbGUgRG9j
cy9TbGlkZXMvU2hlZXRzOiBwYXN0ZSBvZnRlbiBkb2Vzbid0IHdvcmsgYW5kIHNvbWV0aW1lcyBw
cm9kdWNlcyBhbiBlcnJvcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1
eGlsaWFyeVByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQs
MTYgKzIzNCwxNiBAQCBzdGF0aWMgT3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFsaXplCiAg
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFyYW1l
dGVyOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAg
IENSQVNIKCk7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSwgc3RybGVu
KG5hbWUpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG5hbWUsIHN0cmxlbihu
YW1lKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHZhbHVlLCBzdHJsZW4odmFsdWUpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0
ZXJzKHZhbHVlLCBzdHJsZW4odmFsdWUpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsK
ICAgICB9CiAgICAgaWYgKGlzUHJvZmlsZVBhdGgpIHsKICAgICAgICAgYXV0byBjb250ZW50cyA9
IGZpbGVDb250ZW50cyhwcm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgICAgIGlmICghY29udGVu
dHMpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBidWlsZGVyLmFw
cGVuZChjb250ZW50cy0+ZGF0YSgpLCBjb250ZW50cy0+c2l6ZSgpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmRDaGFyYWN0ZXJzKGNvbnRlbnRzLT5kYXRhKCksIGNvbnRlbnRzLT5zaXplKCkpOwog
ICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZChwcm9maWxlT3JQcm9maWxlUGF0aCk7
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS5hc2NpaSgpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OTIsOSArNzkyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFs
aWRNZQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3Ry
aW5nQnVpbGRlcjsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VS
ZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSk7CisgICAgbWVz
c2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZVJlY2VpdmVyTmFt
ZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKICAgICBtZXNzYWdlTmFtZVN0
cmluZ0J1aWxkZXIuYXBwZW5kKCcuJyk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFw
cGVuZChtZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7CisgICAgbWVzc2Fn
ZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZU5hbWUuZGF0YSgpLCBt
ZXNzYWdlTmFtZS5zaXplKCkpOwogCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJ
KEFQSTo6U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkp
LnB0cigpKSk7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDg1MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2Yg
YXBwZW5kKCkgaW4gU3RyaW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJk
aXppbmdpbmcgb24gdGhlIGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVp
bGRlcjo6YXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjph
cHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFy
YWN0ZXJzKC4uLikuCisgICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIHRvIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lcy4K
KwogMjAxOS0wOC0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBLZXlib2FyZElucHV0VGVzdHMuQ2FyZXRTZWxlY3Rpb25SZWN0QWZ0ZXJSZXN0b3Jp
bmdGaXJzdFJlc3BvbmRlciBBUEkgdGVzdHMgdGltZSBvdXQgb24gaVBhZApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9u
IDI0ODQ5NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRl
c3QsIEFwcGVuZCkKICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxk
ZXIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJhYmNkIik7CiAgICAgZXhwZWN0QnVpbGRlckNvbnRl
bnQoIjAxMjM0NTY3ODlhYmNkIiwgYnVpbGRlcik7Ci0gICAgYnVpbGRlci5hcHBlbmQoImVmZ2gi
LCAzKTsKKyAgICBidWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoImVmZ2giLCAzKTsKICAgICBleHBl
Y3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlZmciLCBidWlsZGVyKTsKICAgICBidWls
ZGVyLmFwcGVuZCgiIik7CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNk
ZWZnIiwgYnVpbGRlcik7CkBAIC03MywxMSArNzMsMTEgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVz
dCwgQXBwZW5kKQogCiAgICAgYnVpbGRlci50b1N0cmluZygpOyAvLyBUZXN0IGFmdGVyIHJlaWZ5
U3RyaW5nKCkuCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMTsKLSAgICBidWlsZGVyLmFwcGVu
ZCgiIiwgMCk7CisgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKCIiLCAwKTsKICAgICBleHBl
Y3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OWFiY2RlZmcjIiwgYnVpbGRlcik7Ci0gICAgYnVp
bGRlcjEuYXBwZW5kKGJ1aWxkZXIuY2hhcmFjdGVyczgoKSwgYnVpbGRlci5sZW5ndGgoKSk7Cisg
ICAgYnVpbGRlcjEuYXBwZW5kQ2hhcmFjdGVycyhidWlsZGVyLmNoYXJhY3RlcnM4KCksIGJ1aWxk
ZXIubGVuZ3RoKCkpOwogICAgIGJ1aWxkZXIxLmFwcGVuZCgiWFlaIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoYnVpbGRlcjEuY2hhcmFjdGVyczgoKSwgYnVpbGRlcjEubGVuZ3RoKCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhidWlsZGVyMS5jaGFyYWN0ZXJzOCgpLCBidWlsZGVyMS5s
ZW5ndGgoKSk7CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZWZnIzAx
MjM0NTY3ODlhYmNkZWZnI1hZWiIsIGJ1aWxkZXIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyMjsKQEAgLTEwNCwxMiArMTA0LDEyIEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVu
ZCkKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMjsKICAgICAgICAgVUNoYXIzMiBmcmFr
dHVyQUNoYXIgPSAweDFENTA0OwogICAgICAgICBjb25zdCBVQ2hhciBkYXRhW10gPSB7IFUxNl9M
RUFEKGZyYWt0dXJBQ2hhciksIFUxNl9UUkFJTChmcmFrdHVyQUNoYXIpIH07Ci0gICAgICAgIGJ1
aWxkZXIyLmFwcGVuZChkYXRhLCAyKTsKKyAgICAgICAgYnVpbGRlcjIuYXBwZW5kQ2hhcmFjdGVy
cyhkYXRhLCAyKTsKICAgICAgICAgQVNTRVJUX0VRKDJVLCBidWlsZGVyMi5sZW5ndGgoKSk7CiAg
ICAgICAgIFN0cmluZyByZXN1bHQyID0gYnVpbGRlcjIudG9TdHJpbmcoKTsKICAgICAgICAgQVNT
RVJUX0VRKDJVLCByZXN1bHQyLmxlbmd0aCgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVp
bGRlcjIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChkYXRhLCAyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmRDaGFyYWN0ZXJzKGRhdGEsIDIpOwogICAgICAgICBBU1NFUlRfRVEoNFUsIGJ1aWxk
ZXIubGVuZ3RoKCkpOwogICAgICAgICBjb25zdCBVQ2hhciByZXN1bHRBcnJheVtdID0geyBVMTZf
TEVBRChmcmFrdHVyQUNoYXIpLCBVMTZfVFJBSUwoZnJha3R1ckFDaGFyKSwgVTE2X0xFQUQoZnJh
a3R1ckFDaGFyKSwgVTE2X1RSQUlMKGZyYWt0dXJBQ2hhcikgfTsKICAgICAgICAgZXhwZWN0QnVp
bGRlckNvbnRlbnQoU3RyaW5nKHJlc3VsdEFycmF5LCBXVEZfQVJSQVlfTEVOR1RIKHJlc3VsdEFy
cmF5KSksIGJ1aWxkZXIpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRl
c3QsIFRvQXRvbVN0cmluZ09uRW0KICAgICB9CiAgICAgeyAvLyBBdG9tU3RyaW5nIGNvbnN0cnVj
dGVkIGZyb20gYW4gZW1wdHkgY2hhciogc3RyaW5nLgogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIiLCAwKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRDaGFyYWN0ZXJzKCIiLCAwKTsKICAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0g
YnVpbGRlci50b0F0b21TdHJpbmcoKTsKICAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBh
dG9tU3RyaW5nKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376024</attachid>
            <date>2019-08-10 17:16:17 -0700</date>
            <delta_ts>2019-08-10 18:37:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200614-20190810171616.patch</filename>
            <type>text/plain</type>
            <size>33292</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0
aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uZmlnRmlsZS5jcHA6
CisgICAgICAgIChKU0M6OkNvbmZpZ0ZpbGU6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6
TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2VDbGF1c2UpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTQsNyArODU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHJlcGxMZW4gPSByZXBsYWNlLmxlbmd0aCgpOwogICAgICAg
ICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQgfHwgcmVwbExlbikgewotICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0
LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRT
dWJzdHJpbmcoc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIHJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VtZW50LCByZXBsYWNlLCBzdHJpbmcsIG92ZWN0
b3IuZGF0YSgpLCByZWdFeHApOwpAQCAtODk5LDcgKzg5OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHN0cmluZ05vZGUpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHN0cmluZy5sZW5n
dGgoKSkKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nLCBsYXN0SW5k
ZXgsIHN0cmluZy5sZW5ndGgoKSAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgbGFzdEluZGV4LCBzdHJpbmcubGVuZ3RoKCkg
LSBsYXN0SW5kZXgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvTGF6eUpTQ29uc3RhbnQobV9ncmFwaCwgTGF6eUpTVmFsdWU6Om5ld1N0cmluZyht
X2dyYXBoLCBidWlsZGVyLnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgQ29uZmlnRmlsZTo6cGFyc2UoKQog
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnAgJiYgIWlzQVNDSUlTcGFjZSgqcCkgJiYgKnAg
IT0gJz0nKQogICAgICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG9wdGlvbk5hbWVTdGFydCwgcCAtIG9wdGlvbk5hbWVTdGFydCk7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhvcHRpb25OYW1l
U3RhcnQsIHAgLSBvcHRpb25OYW1lU3RhcnQpOwogCiAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgqcCAmJiBpc0FTQ0lJU3BhY2UoKnApICYmICpwICE9ICc9JykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHArKzsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENvbmZpZ0ZpbGU6OnBhcnNlKCkK
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmICFpc0FTQ0lJU3BhY2UoKnApKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG9wdGlvblZhbHVlU3RhcnQsIHAgLSBvcHRpb25WYWx1ZVN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG9wdGlvblZhbHVlU3RhcnQsIHAg
LSBvcHRpb25WYWx1ZVN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmIGlzQVNDSUlTcGFjZSgq
cCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMiwxMiArNjIyLDEyIEBA
IFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXIKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghbV9idWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgbV9idWlsZGVy
LmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwogCiBzbG93UGF0
aEJlZ2luOgogICAgICAgICBpZiAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciA8
IG1fZW5kICYmICptX3B0ciA9PSAnXFwnKSB7CiAgICAgICAgICAgICBpZiAobV9idWlsZGVyLmlz
RW1wdHkoKSAmJiBydW5TdGFydCA8IG1fcHRyKQotICAgICAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgICAgIG1fYnVp
bGRlci5hcHBlbmRDaGFyYWN0ZXJzKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAg
ICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIl9zOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25PdmVycmlkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAg
c3RhdGljIFN0cmluZyBwYXJzZUNsYXVzZShjb25zdCBjaGFyKiBrZQogICAgICAgICAgICAgaWYg
KHBbc3RybGVuKHRlcm1pbmF0b3IpXSAhPSAnXG4nKQogICAgICAgICAgICAgICAgIEZBSUxfV0lU
SF9FUlJPUihTWU5UQVhfRVJST1IsICgiVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyICciLCBr
ZXl3b3JkLCAiJyBjbGF1c2UgZW5kIGRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJzpcbiIsIGxp
bmUsICJcbiIpKTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgcCAtIGxpbmUg
KyAxKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhsaW5lLCBwIC0gbGlu
ZSArIDEpOwogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAg
fQogICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogd3RmL0hleE51bWJl
ci5oOgorICAgICAgICAoV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKToKKyAgICAg
ICAgQWRkIG92ZXJsb2FkIHRoYXQgZXhwbGljaXRseSB0YWtlcyBhIFN0cmluZ0J1aWxkZXIgdG8g
d29yayBhcm91bmQgcmVuYW1lIGZyb20gYXBwZW5kIHRvIGFwcGVuZENoYXJhY3RlcnMuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6
OmFwcGVuZCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5k
U3Vic3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCk6
CisgICAgICAgIChXVEY6OkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmdCdWls
ZGVyPjo6Zmx1c2gpOgorICAgICAgICBVcGRhdGUgZm9yIHJlbmFtZXMuCisKIDIwMTktMDgtMDkg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBEZXZp
cnR1YWxpemUgdGhlIEFTVApJbmRleDogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDI0ODQ5NSkKKysr
IFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTcyLDYgKzczLDE3IEBAIGlubGluZSB2b2lkIGFwcGVu
ZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUKICAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmZp
cnN0LCByZXN1bHQuc2Vjb25kKTsKIH0KIAorLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRv
IGFwcGVuZEhleC4KKy8vIFNhbWUgYXMgYXBwZW5kVW5zaWduZWRBc0hleCwgYnV0IHplcm8tcGFk
ZGluZyB0byBnZXQgYXQgbGVhc3QgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KK3RlbXBs
YXRlPHR5cGVuYW1lIE51bWJlclR5cGU+CitpbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKE51bWJlclR5cGUgbnVtYmVyLCBTdHJpbmdCdWlsZGVyJiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2Fz
ZSkKK3sKKyAgICAvLyBFYWNoIGJ5dGUgY2FuIGdlbmVyYXRlIHVwIHRvIHR3byBkaWdpdHMuCisg
ICAgc3RkOjphcnJheTxMQ2hhciwgc2l6ZW9mKE51bWJlclR5cGUpICogMj4gYnVmZmVyOworICAg
IGF1dG8gcmVzdWx0ID0gSW50ZXJuYWw6OmFwcGVuZEhleChidWZmZXIsIG51bWJlciwgbWluaW11
bURpZ2l0cywgbW9kZSk7CisgICAgZGVzdGluYXRpb24uYXBwZW5kQ2hhcmFjdGVycyhyZXN1bHQu
Zmlyc3QsIHJlc3VsdC5zZWNvbmQpOworfQorCiBzdHJ1Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAg
ICBzdGQ6OmFycmF5PExDaGFyLCAxNj4gY2hhcmFjdGVyczsKICAgICB1bnNpZ25lZCBsZW5ndGg7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMyw3ICszMDMsNyBAQCBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBl
bmRVbmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgU3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoIHx8IGhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KGNvbnN0IFVDaGFyKiAKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmICEoKmNoYXJhY3RlcnMg
JiB+MHhmZikpIHsKICAgICAgICAgICAgIC8vIEFwcGVuZCBhcyA4IGJpdCBjaGFyYWN0ZXIKICAg
ICAgICAgICAgIExDaGFyIGxDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KCpjaGFyYWN0ZXJzKTsK
LSAgICAgICAgICAgIHJldHVybiBhcHBlbmQoJmxDaGFyLCAxKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDaGFyYWN0ZXJzKCZsQ2hhciwgMSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
YWxjdWxhdGUgdGhlIG5ldyBzaXplIG9mIHRoZSBidWlsZGVyIGFmdGVyIGFwcGVuZGluZy4KQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
CiAgICAgQVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5z
aWduZWQ+KCkpOwogfQogCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRD
aGFyYWN0ZXJzKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFsZW5ndGggfHwgaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
ODMsNyArMzgzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQ0ZTdHJpbmdSZWYgcwog
ewogICAgIC8vIEZhc3QgcGF0aDogYXZvaWQgY29uc3RydWN0aW5nIGEgdGVtcG9yYXJ5IFN0cmlu
ZyB3aGVuIHBvc3NpYmxlLgogICAgIGlmIChhdXRvKiBjaGFyYWN0ZXJzID0gQ0ZTdHJpbmdHZXRD
U3RyaW5nUHRyKHN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEpKSB7Ci0gICAgICAg
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZykpOworICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3Ry
aW5nKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXBwZW5kKFN0cmluZyhzdHJpbmcp
KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsMTAgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT3Zl
cmZsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoLmhhc092ZXJmbG93ZWQoKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBjcmFzaGVzT25PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1f
bGVuZ3RoLnNob3VsZENyYXNoT25PdmVyZmxvdygpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZENoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBMQ2hh
ciosIHVuc2lnbmVkKTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpIHsgYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Y2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IEF0b21TdHJp
bmcmIGF0b21TdHJpbmcpCiAgICAgewpAQCAtOTYsOSArOTYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5kKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgYXBwZW5k
Q2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZ0J1aWxkZXImIG90aGVyKQpAQCAtMTIxLDE3ICsxMjEsMTcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG90aGVyLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5k
KG90aGVyLmNoYXJhY3RlcnM4KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAg
ICAgICAgIGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczgoKSwgb3RoZXIubV9sZW5n
dGgudW5zYWZlR2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQob3RoZXIu
Y2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAg
IGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVu
c2FmZUdldCgpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcpCiAgICAgewogICAgICAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKLSAgICAgICAgICAg
IGFwcGVuZChzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0
cmluZ1ZpZXcubGVuZ3RoKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQoc3Ry
aW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7CisgICAgICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcu
bGVuZ3RoKCkpOwogICAgIH0KIAogI2lmIFVTRShDRikKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoTlNTdHJpbmcgKnN0cmluZykgeyBhcHBlbmQoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZyk7IH0KICNlbmRpZgogICAgIAotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB2b2lkIGFwcGVuZFN1YnN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MCwxNSArMTUwLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAg
ICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5ndGgpOworICAg
ICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMo
c3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBpZiAoY2hh
cmFjdGVycykKLSAgICAgICAgICAgIGFwcGVuZChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVy
cykpOworICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBzdHJsZW4oY2hh
cmFjdGVycykpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKFVDaGFyIGMpCkBAIC0xNzksNyAr
MTc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBhcHBlbmQoJmMsIDEpOworICAgICAgICBhcHBlbmRDaGFyYWN0
ZXJzKCZjLCAxKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChMQ2hhciBjKQpAQCAtMTk0LDcg
KzE5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2J1ZmZlckNoYXJhY3RlcnMxNlts
ZW5ndGhdID0gYzsKICAgICAgICAgICAgIG1fbGVuZ3RoKys7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoJmMs
IDEpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZj
aGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIHsgYXBwZW5kKGNoYXJhY3RlcnMsIGNoYXJhY3Rl
ckNvdW50IC0gMSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kTGl0ZXJhbChjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMo
Y2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kTnVtYmVyKGludCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YXBwZW5kTnVtYmVyKHVuc2lnbmVkKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgCiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nQnVpbGRlcj4gewogICAgIHVzaW5nIFJldHVyblR5
cGUgPSB2b2lkOwogICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSBTdHJpbmdCdWls
ZGVyOwotICAgIHN0YXRpYyB2b2lkIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFN0cmluZ0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBw
ZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0KKyAgICBzdGF0aWMgdm9pZCBmbHVzaChMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdCdWlsZGVyKiBzdHJpbmdCdWlsZGVy
KSB7IHN0cmluZ0J1aWxkZXItPmFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzOCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3Ry
aW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhl
IGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKC4uLikuCisg
ICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHRvIAorICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKworICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaXRo
UmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0
aWVzSW50ZXJuYWwpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6YXBwZW5kVG9TdHJpbmdCdWls
ZGVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdp
dGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpidWZmZXJlZENoYXJh
Y3RlcnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50
ZWRTdHJpbmc6OlN1YnN0cmluZzo6YXBwZW5kVG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6
ZGVjb2RlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d3JpdGVUb1N0cmluZ0J1aWxkZXIpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NDYsNyArOTQ2LDcgQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhcnQgPSBub2RlID09ICZzdGFydENvbnRhaW5lcigpID8gc3RkOjptaW4obV9zdGFydC5v
ZmZzZXQoKSwgbGVuZ3RoKSA6IDBVOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gbm9kZSA9
PSAmZW5kQ29udGFpbmVyKCkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0
KCkpLCBsZW5ndGgpIDogbGVuZ3RoOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwg
c3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU3Vic3RyaW5n
KGRhdGEsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDcgKzQyMCw3
IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UoY28KICAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSBzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgcmViYWxhbmNlZFN0cmluZy5yZXNlcnZlQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAgICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCByZWJhbGFuY2VkU3Ry
aW5nLmxlbmd0aCgpLCBpIC0gcmViYWxhbmNlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJl
YmFsYW5jZWRTdHJpbmcuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgcmViYWxhbmNlZFN0cmluZy5s
ZW5ndGgoKSwgaSAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICByZWJhbGFu
Y2VkU3RyaW5nLmFwcGVuZChzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpOwogICAgIH0KIApA
QCAtNDI4LDcgKzQyOCw3IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2Uo
Y28KICAgICAgICAgcmV0dXJuIHN0cmluZzsKIAogICAgIHJlYmFsYW5jZWRTdHJpbmcucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCk7Ci0gICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCBy
ZWJhbGFuY2VkU3RyaW5nLmxlbmd0aCgpLCBsZW5ndGggLSByZWJhbGFuY2VkU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICByZWJhbGFuY2VkU3RyaW5nLmFwcGVuZFN1YnN0cmluZyhzdHJpbmcsIHJlYmFs
YW5jZWRTdHJpbmcubGVuZ3RoKCksIGxlbmd0aCAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkp
OwogICAgIHJldHVybiByZWJhbGFuY2VkU3RyaW5nLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFw
cGVuZENoYXJhY3RlcnNSZXBsYQogICAgICAgICBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlciA9IHRl
eHRbaV07CiAgICAgICAgIHVpbnQ4X3Qgc3Vic3RpdHV0aW9uID0gY2hhcmFjdGVyIDwgV1RGX0FS
UkFZX0xFTkdUSChlbnRpdHlNYXApID8gZW50aXR5TWFwW2NoYXJhY3Rlcl0gOiBzdGF0aWNfY2Fz
dDx1aW50OF90PihFbnRpdHlTdWJzdGl0dXRpb25OdWxsSW5kZXgpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoc3Vic3RpdHV0aW9uICE9IEVudGl0eVN1YnN0aXR1dGlvbk51bGxJbmRleCkgJiYgZW50
aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLm1hc2sgJiBlbnRpdHlNYXNrKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwg
aSAtIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
ZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0eVN1
YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoYXJhY3RlcnModGV4dCArIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5LCBpIC0gcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rl
cnMoZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0
eVN1YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOwogICAgICAgICAgICAgcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkgPSBpICsgMTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXN1
bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRp
b25BZnRlckxhc3RFbnRpdHkpOworICAgIHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXJzKHRleHQgKyBw
b3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRpb25BZnRlckxhc3RFbnRpdHkp
OwogfQogCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5n
RW50aXRpZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIEVudGl0eU1hc2sgZW50aXR5TWFzaykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0Ojph
cHBlbmRUb1MKICAgICBpZiAobV9zaW5nbGVDaGFyYWN0ZXIpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc2luZ2xlQ2hhcmFjdGVyKTsKICAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1fc3RyaW5nLCBtX29mZnNldCwgbV9sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZFN1
YnN0cmluZyhtX3N0cmluZywgbV9vZmZzZXQsIG1fbGVuZ3RoKTsKIH0KIAogLy8gLS0tLS0tLS0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDEzICs3MTcs
MTMgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZQogICAgICAgICAg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwogICAgICAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9
PSBub2RlICYmIGJyZWFrT2Zmc2V0IDw9IGxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChi
cmVha09mZnNldCA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoZGF0YSwgcG9zaXRpb24sIGJyZWFrT2Zmc2V0IC0gcG9zaXRpb24pOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kU3Vic3RyaW5nKGRhdGEsIHBvc2l0aW9uLCBicmVha09mZnNl
dCAtIHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBicmVha09mZnNl
dDsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5l
LCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRTdWJzdHJpbmcoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0
aW9uKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoYnJlYWtOb2RlID09IG5vZGUpCiAgICAg
ICAgICAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAJKHJl
dmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBTdHJpbmcgSFRNTFRv
a2VuaXplcjo6YnVmZmVyZWRDaGFyYWN0ZXJzCiAgICAgY2hhcmFjdGVycy5yZXNlcnZlQ2FwYWNp
dHkobnVtYmVyT2ZCdWZmZXJlZENoYXJhY3RlcnMoKSk7CiAgICAgY2hhcmFjdGVycy5hcHBlbmQo
JzwnKTsKICAgICBjaGFyYWN0ZXJzLmFwcGVuZCgnLycpOwotICAgIGNoYXJhY3RlcnMuYXBwZW5k
KG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEoKSwgbV90ZW1wb3JhcnlCdWZmZXIuc2l6ZSgpKTsKKyAg
ICBjaGFyYWN0ZXJzLmFwcGVuZENoYXJhY3RlcnMobV90ZW1wb3JhcnlCdWZmZXIuZGF0YSgpLCBt
X3RlbXBvcmFyeUJ1ZmZlci5zaXplKCkpOwogICAgIHJldHVybiBjaGFyYWN0ZXJzLnRvU3RyaW5n
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5h
dGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3
byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNj
b2duaXplZCB0aGlzIHN0cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciBoZWFkZXI7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0
YSkpLCBsZW5ndGgpOworICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoYXJhY3RlcnMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRI
ZWFkZXJEYXRhKSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBwZW5kKCJcblxuIik7
CiAKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJWVFQgaGVhZGVyICIsICZo
ZWFkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpT
dWJzdHJpbmc6OmFwcGVuZFRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YnVpbGRlci5hcHBlbmQoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7
CisgICAgYnVpbGRlci5hcHBlbmRTdWJzdHJpbmcoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBs
ZW5ndGgsIGxlbmd0aCk7CiB9CiAKIFNlZ21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3RyaW5nOjpv
cGVyYXRvcj0oU2VnbWVudGVkU3RyaW5nJiYgb3RoZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw3ICszMDcsNyBAQCBTdHJpbmcgVGV4dENvZGVjSUNVOjpkZWNvZGUoY29uc3Qg
Y2hhciogCiAKICAgICBkbyB7CiAgICAgICAgIGludCB1Y2hhcnNEZWNvZGVkID0gZGVjb2RlVG9C
dWZmZXIoYnVmZmVyLCBidWZmZXJMaW1pdCwgc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywg
Zmx1c2gsIGVycik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3RlcnMoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKICAgICB9IHdoaWxlIChlcnIgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwogCiAgICAg
aWYgKFVfRkFJTFVSRShlcnIpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUv
UmVuZGVyVGhlbWVXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dwZS9SZW5kZXJUaGVtZVdQRS5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dwZS9SZW5kZXJUaGVtZVdQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDggKzU4LDggQEAgU3RyaW5nIFJlbmRlclRoZW1lV1BFOjptZWRpYUNvbnRyb2xzU3R5bAogU3Ry
aW5nIFJlbmRlclRoZW1lV1BFOjptZWRpYUNvbnRyb2xzU2NyaXB0KCkKIHsKICAgICBTdHJpbmdC
dWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBlbmQobWVkaWFDb250
cm9sc0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0xvY2Fs
aXplZFN0cmluZ3NKYXZhU2NyaXB0KSk7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBlbmQobWVkaWFD
b250cm9sc0Jhc2VKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0Jhc2VKYXZhU2NyaXB0
KSk7CisgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lZGlhQ29udHJvbHNMb2Nh
bGl6ZWRTdHJpbmdzSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzSmF2YVNjcmlwdCkpOworICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZWRp
YUNvbnRyb2xzQmFzZUphdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmFzZUphdmFTY3Jp
cHQpKTsKICAgICByZXR1cm4gc2NyaXB0QnVpbGRlci50b1N0cmluZygpOwogfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAJKHJldmlz
aW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTIsOSArMTIxMiw5IEBAIFN0cmluZyBSZW5kZXJUaGVt
ZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2kKIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6bWVkaWFDb250
cm9sc1NjcmlwdCgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzSmF2YVNjcmlw
dCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzSmF2YVNjcmlwdCkpOwotICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCwgc2l6ZW9m
KG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCkpOwotICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5k
KG1lZGlhQ29udHJvbHNHdGtKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0d0a0phdmFT
Y3JpcHQpKTsKKyAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVkaWFDb250cm9s
c0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0xvY2FsaXpl
ZFN0cmluZ3NKYXZhU2NyaXB0KSk7CisgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJz
KG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCYXNlSmF2
YVNjcmlwdCkpOworICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZWRpYUNvbnRy
b2xzR3RrSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNHdGtKYXZhU2NyaXB0KSk7CiAg
ICAgcmV0dXJuIHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgaW50
IHdyaXRlVG9TdHJpbmdCdWlsZGVyKHZvaWQqIGNvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXN1bHRPdXRwdXQuYXBwZW5kKG91dHB1dEJ1ZmZlci5kYXRhKCksIG91dHB1dE9mZnNldCk7Cisg
ICAgcmVzdWx0T3V0cHV0LmFwcGVuZENoYXJhY3RlcnMob3V0cHV0QnVmZmVyLmRhdGEoKSwgb3V0
cHV0T2Zmc2V0KTsKICAgICByZXR1cm4gaW5wdXRPZmZzZXQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBl
bmQoKSBpbiBTdHJpbmdCdWlsZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemlu
Z2luZyBvbiB0aGUgZmxleGlibGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmVu
YW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCksIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkKSBhbmQgCisgICAgICAgIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpIHRvIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAgCisgICAgICAgIFJlbmFtZXMgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFN1YnN0
cmluZyguLi4pLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIFVwZGF0
ZSBmb3IgcmVuYW1lcy4KKwogMjAxOS0wOC0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBHb29nbGUgRG9jcy9TbGlkZXMvU2hlZXRz
OiBwYXN0ZSBvZnRlbiBkb2Vzbid0IHdvcmsgYW5kIHNvbWV0aW1lcyBwcm9kdWNlcyBhbiBlcnJv
cgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NN
YWMubW0JKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhp
bGlhcnlQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsMTYgKzIzNCwxNiBAQCBz
dGF0aWMgT3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFsaXplCiAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwgZ2V0
cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSwgc3RybGVuKG5hbWUpKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG5hbWUsIHN0cmxlbihuYW1lKSk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLCBzdHJs
ZW4odmFsdWUpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKHZhbHVlLCBzdHJs
ZW4odmFsdWUpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICB9CiAgICAgaWYg
KGlzUHJvZmlsZVBhdGgpIHsKICAgICAgICAgYXV0byBjb250ZW50cyA9IGZpbGVDb250ZW50cyhw
cm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgICAgIGlmICghY29udGVudHMpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb250ZW50cy0+
ZGF0YSgpLCBjb250ZW50cy0+c2l6ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0
ZXJzKGNvbnRlbnRzLT5kYXRhKCksIGNvbnRlbnRzLT5zaXplKCkpOwogICAgIH0gZWxzZQogICAg
ICAgICBidWlsZGVyLmFwcGVuZChwcm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKS5hc2NpaSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsOSArNzky
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAg
ICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0
YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSk7CisgICAgbWVzc2FnZU5hbWVTdHJpbmdC
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZVJlY2VpdmVyTmFtZS5kYXRhKCksIG1lc3Nh
Z2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKICAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcuJyk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZChtZXNzYWdlTmFt
ZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7CisgICAgbWVzc2FnZU5hbWVTdHJpbmdCdWls
ZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXpl
KCkpOwogCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpj
cmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigpKSk7CiB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDg1MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3Ry
aW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhl
IGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKC4uLikuCisg
ICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHRvIAorICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lcy4KKwogMjAxOS0wOC0wOSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBLZXlib2Fy
ZElucHV0VGVzdHMuQ2FyZXRTZWxlY3Rpb25SZWN0QWZ0ZXJSZXN0b3JpbmdGaXJzdFJlc3BvbmRl
ciBBUEkgdGVzdHMgdGltZSBvdXQgb24gaVBhZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxkZXIpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCJhYmNkIik7CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlh
YmNkIiwgYnVpbGRlcik7Ci0gICAgYnVpbGRlci5hcHBlbmQoImVmZ2giLCAzKTsKKyAgICBidWls
ZGVyLmFwcGVuZENoYXJhY3RlcnMoImVmZ2giLCAzKTsKICAgICBleHBlY3RCdWlsZGVyQ29udGVu
dCgiMDEyMzQ1Njc4OWFiY2RlZmciLCBidWlsZGVyKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIik7
CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZWZnIiwgYnVpbGRlcik7
CkBAIC03MywxMSArNzMsMTEgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgQXBwZW5kKQogCiAg
ICAgYnVpbGRlci50b1N0cmluZygpOyAvLyBUZXN0IGFmdGVyIHJlaWZ5U3RyaW5nKCkuCiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyMTsKLSAgICBidWlsZGVyLmFwcGVuZCgiIiwgMCk7CisgICAg
YnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKCIiLCAwKTsKICAgICBleHBlY3RCdWlsZGVyQ29udGVu
dCgiMDEyMzQ1Njc4OWFiY2RlZmcjIiwgYnVpbGRlcik7Ci0gICAgYnVpbGRlcjEuYXBwZW5kKGJ1
aWxkZXIuY2hhcmFjdGVyczgoKSwgYnVpbGRlci5sZW5ndGgoKSk7CisgICAgYnVpbGRlcjEuYXBw
ZW5kQ2hhcmFjdGVycyhidWlsZGVyLmNoYXJhY3RlcnM4KCksIGJ1aWxkZXIubGVuZ3RoKCkpOwog
ICAgIGJ1aWxkZXIxLmFwcGVuZCgiWFlaIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlcjEu
Y2hhcmFjdGVyczgoKSwgYnVpbGRlcjEubGVuZ3RoKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhidWlsZGVyMS5jaGFyYWN0ZXJzOCgpLCBidWlsZGVyMS5sZW5ndGgoKSk7CiAgICAg
ZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZWZnIzAxMjM0NTY3ODlhYmNkZWZn
I1hZWiIsIGJ1aWxkZXIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMjsKQEAgLTEwNCwx
MiArMTA0LDEyIEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyMjsKICAgICAgICAgVUNoYXIzMiBmcmFrdHVyQUNoYXIgPSAweDFE
NTA0OwogICAgICAgICBjb25zdCBVQ2hhciBkYXRhW10gPSB7IFUxNl9MRUFEKGZyYWt0dXJBQ2hh
ciksIFUxNl9UUkFJTChmcmFrdHVyQUNoYXIpIH07Ci0gICAgICAgIGJ1aWxkZXIyLmFwcGVuZChk
YXRhLCAyKTsKKyAgICAgICAgYnVpbGRlcjIuYXBwZW5kQ2hhcmFjdGVycyhkYXRhLCAyKTsKICAg
ICAgICAgQVNTRVJUX0VRKDJVLCBidWlsZGVyMi5sZW5ndGgoKSk7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQyID0gYnVpbGRlcjIudG9TdHJpbmcoKTsKICAgICAgICAgQVNTRVJUX0VRKDJVLCByZXN1
bHQyLmxlbmd0aCgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlcjIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChkYXRhLCAyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0
ZXJzKGRhdGEsIDIpOwogICAgICAgICBBU1NFUlRfRVEoNFUsIGJ1aWxkZXIubGVuZ3RoKCkpOwog
ICAgICAgICBjb25zdCBVQ2hhciByZXN1bHRBcnJheVtdID0geyBVMTZfTEVBRChmcmFrdHVyQUNo
YXIpLCBVMTZfVFJBSUwoZnJha3R1ckFDaGFyKSwgVTE2X0xFQUQoZnJha3R1ckFDaGFyKSwgVTE2
X1RSQUlMKGZyYWt0dXJBQ2hhcikgfTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoU3Ry
aW5nKHJlc3VsdEFycmF5LCBXVEZfQVJSQVlfTEVOR1RIKHJlc3VsdEFycmF5KSksIGJ1aWxkZXIp
OwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvQXRvbVN0cmlu
Z09uRW0KICAgICB9CiAgICAgeyAvLyBBdG9tU3RyaW5nIGNvbnN0cnVjdGVkIGZyb20gYW4gZW1w
dHkgY2hhciogc3RyaW5nLgogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIiLCAwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJz
KCIiLCAwKTsKICAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRlci50b0F0b21T
dHJpbmcoKTsKICAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3RyaW5nKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376025</attachid>
            <date>2019-08-10 18:37:18 -0700</date>
            <delta_ts>2019-08-12 10:07:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200614-20190810183717.patch</filename>
            <type>text/plain</type>
            <size>34375</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0
aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uZmlnRmlsZS5jcHA6
CisgICAgICAgIChKU0M6OkNvbmZpZ0ZpbGU6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6
TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2VDbGF1c2UpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTQsNyArODU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHJlcGxMZW4gPSByZXBsYWNlLmxlbmd0aCgpOwogICAgICAg
ICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQgfHwgcmVwbExlbikgewotICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0
LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRT
dWJzdHJpbmcoc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIHJlcGxhY2VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VtZW50LCByZXBsYWNlLCBzdHJpbmcsIG92ZWN0
b3IuZGF0YSgpLCByZWdFeHApOwpAQCAtODk5LDcgKzg5OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHN0cmluZ05vZGUpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHN0cmluZy5sZW5n
dGgoKSkKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nLCBsYXN0SW5k
ZXgsIHN0cmluZy5sZW5ndGgoKSAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgbGFzdEluZGV4LCBzdHJpbmcubGVuZ3RoKCkg
LSBsYXN0SW5kZXgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvTGF6eUpTQ29uc3RhbnQobV9ncmFwaCwgTGF6eUpTVmFsdWU6Om5ld1N0cmluZyht
X2dyYXBoLCBidWlsZGVyLnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3BwCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgQ29uZmlnRmlsZTo6cGFyc2UoKQog
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnAgJiYgIWlzQVNDSUlTcGFjZSgqcCkgJiYgKnAg
IT0gJz0nKQogICAgICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG9wdGlvbk5hbWVTdGFydCwgcCAtIG9wdGlvbk5hbWVTdGFydCk7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhvcHRpb25OYW1l
U3RhcnQsIHAgLSBvcHRpb25OYW1lU3RhcnQpOwogCiAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgqcCAmJiBpc0FTQ0lJU3BhY2UoKnApICYmICpwICE9ICc9JykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHArKzsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENvbmZpZ0ZpbGU6OnBhcnNlKCkK
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmICFpc0FTQ0lJU3BhY2UoKnApKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcCsrOwogCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG9wdGlvblZhbHVlU3RhcnQsIHAgLSBvcHRpb25WYWx1ZVN0YXJ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG9wdGlvblZhbHVlU3RhcnQsIHAg
LSBvcHRpb25WYWx1ZVN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwICYmIGlzQVNDSUlTcGFjZSgq
cCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMiwxMiArNjIyLDEyIEBA
IFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXIKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghbV9idWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgbV9idWlsZGVy
LmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOwogCiBzbG93UGF0
aEJlZ2luOgogICAgICAgICBpZiAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciA8
IG1fZW5kICYmICptX3B0ciA9PSAnXFwnKSB7CiAgICAgICAgICAgICBpZiAobV9idWlsZGVyLmlz
RW1wdHkoKSAmJiBydW5TdGFydCA8IG1fcHRyKQotICAgICAgICAgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQocnVuU3RhcnQsIG1fcHRyIC0gcnVuU3RhcnQpOworICAgICAgICAgICAgICAgIG1fYnVp
bGRlci5hcHBlbmRDaGFyYWN0ZXJzKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAgICAg
ICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIl9zOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25PdmVycmlkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAg
c3RhdGljIFN0cmluZyBwYXJzZUNsYXVzZShjb25zdCBjaGFyKiBrZQogICAgICAgICAgICAgaWYg
KHBbc3RybGVuKHRlcm1pbmF0b3IpXSAhPSAnXG4nKQogICAgICAgICAgICAgICAgIEZBSUxfV0lU
SF9FUlJPUihTWU5UQVhfRVJST1IsICgiVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyICciLCBr
ZXl3b3JkLCAiJyBjbGF1c2UgZW5kIGRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJzpcbiIsIGxp
bmUsICJcbiIpKTsKIAotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgcCAtIGxpbmUg
KyAxKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhsaW5lLCBwIC0gbGlu
ZSArIDEpOwogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAg
fQogICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBlbmQoKSBpbiBTdHJpbmdCdWls
ZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemluZ2luZyBvbiB0aGUgZmxleGli
bGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkKSBhbmQgCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5z
aWduZWQpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZFN1YnN0cmluZyguLi4pLgorCisgICAgICAgICogd3RmL0hleE51bWJl
ci5oOgorICAgICAgICAoV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKToKKyAgICAg
ICAgQWRkIG92ZXJsb2FkIHRoYXQgZXhwbGljaXRseSB0YWtlcyBhIFN0cmluZ0J1aWxkZXIgdG8g
d29yayBhcm91bmQgcmVuYW1lIGZyb20gYXBwZW5kIHRvIGFwcGVuZENoYXJhY3RlcnMuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6
OmFwcGVuZCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5k
U3Vic3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCk6
CisgICAgICAgIChXVEY6OkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmdCdWls
ZGVyPjo6Zmx1c2gpOgorICAgICAgICBVcGRhdGUgZm9yIHJlbmFtZXMuCisKIDIwMTktMDgtMDkg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBEZXZp
cnR1YWxpemUgdGhlIEFTVApJbmRleDogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDI0ODQ5NSkKKysr
IFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTcyLDYgKzczLDE3IEBAIGlubGluZSB2b2lkIGFwcGVu
ZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUKICAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmZp
cnN0LCByZXN1bHQuc2Vjb25kKTsKIH0KIAorLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRv
IGFwcGVuZEhleC4KKy8vIFNhbWUgYXMgYXBwZW5kVW5zaWduZWRBc0hleCwgYnV0IHplcm8tcGFk
ZGluZyB0byBnZXQgYXQgbGVhc3QgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KK3RlbXBs
YXRlPHR5cGVuYW1lIE51bWJlclR5cGU+CitpbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKE51bWJlclR5cGUgbnVtYmVyLCBTdHJpbmdCdWlsZGVyJiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2Fz
ZSkKK3sKKyAgICAvLyBFYWNoIGJ5dGUgY2FuIGdlbmVyYXRlIHVwIHRvIHR3byBkaWdpdHMuCisg
ICAgc3RkOjphcnJheTxMQ2hhciwgc2l6ZW9mKE51bWJlclR5cGUpICogMj4gYnVmZmVyOworICAg
IGF1dG8gcmVzdWx0ID0gSW50ZXJuYWw6OmFwcGVuZEhleChidWZmZXIsIG51bWJlciwgbWluaW11
bURpZ2l0cywgbW9kZSk7CisgICAgZGVzdGluYXRpb24uYXBwZW5kQ2hhcmFjdGVycyhyZXN1bHQu
Zmlyc3QsIHJlc3VsdC5zZWNvbmQpOworfQorCiBzdHJ1Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAg
ICBzdGQ6OmFycmF5PExDaGFyLCAxNj4gY2hhcmFjdGVyczsKICAgICB1bnNpZ25lZCBsZW5ndGg7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMyw3ICszMDMsNyBAQCBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBl
bmRVbmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgU3RyaW5n
QnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoIHx8IGhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KGNvbnN0IFVDaGFyKiAKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmICEoKmNoYXJhY3RlcnMg
JiB+MHhmZikpIHsKICAgICAgICAgICAgIC8vIEFwcGVuZCBhcyA4IGJpdCBjaGFyYWN0ZXIKICAg
ICAgICAgICAgIExDaGFyIGxDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KCpjaGFyYWN0ZXJzKTsK
LSAgICAgICAgICAgIHJldHVybiBhcHBlbmQoJmxDaGFyLCAxKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDaGFyYWN0ZXJzKCZsQ2hhciwgMSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
YWxjdWxhdGUgdGhlIG5ldyBzaXplIG9mIHRoZSBidWlsZGVyIGFmdGVyIGFwcGVuZGluZy4KQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
CiAgICAgQVNTRVJUKG1fYnVmZmVyLT5sZW5ndGgoKSA+PSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5z
aWduZWQ+KCkpOwogfQogCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRD
aGFyYWN0ZXJzKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFsZW5ndGggfHwgaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
ODMsNyArMzgzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQ0ZTdHJpbmdSZWYgcwog
ewogICAgIC8vIEZhc3QgcGF0aDogYXZvaWQgY29uc3RydWN0aW5nIGEgdGVtcG9yYXJ5IFN0cmlu
ZyB3aGVuIHBvc3NpYmxlLgogICAgIGlmIChhdXRvKiBjaGFyYWN0ZXJzID0gQ0ZTdHJpbmdHZXRD
U3RyaW5nUHRyKHN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEpKSB7Ci0gICAgICAg
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZykpOworICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3Ry
aW5nKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXBwZW5kKFN0cmluZyhzdHJpbmcp
KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNDg0OTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsMTAgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT3Zl
cmZsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoLmhhc092ZXJmbG93ZWQoKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBjcmFzaGVzT25PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1f
bGVuZ3RoLnNob3VsZENyYXNoT25PdmVyZmxvdygpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZENoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBMQ2hh
ciosIHVuc2lnbmVkKTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpIHsgYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Y2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IEF0b21TdHJp
bmcmIGF0b21TdHJpbmcpCiAgICAgewpAQCAtOTYsOSArOTYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5kKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgYXBwZW5k
Q2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZ0J1aWxkZXImIG90aGVyKQpAQCAtMTIxLDE3ICsxMjEsMTcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG90aGVyLmlzOEJpdCgpKQotICAgICAgICAgICAgYXBwZW5k
KG90aGVyLmNoYXJhY3RlcnM4KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAg
ICAgICAgIGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczgoKSwgb3RoZXIubV9sZW5n
dGgudW5zYWZlR2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQob3RoZXIu
Y2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAg
IGFwcGVuZENoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVyczE2KCksIG90aGVyLm1fbGVuZ3RoLnVu
c2FmZUdldCgpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcpCiAgICAgewogICAgICAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKLSAgICAgICAgICAg
IGFwcGVuZChzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0
cmluZ1ZpZXcubGVuZ3RoKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQoc3Ry
aW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7CisgICAgICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcu
bGVuZ3RoKCkpOwogICAgIH0KIAogI2lmIFVTRShDRikKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoTlNTdHJpbmcgKnN0cmluZykgeyBhcHBlbmQoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZyk7IH0KICNlbmRpZgogICAgIAotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB2b2lkIGFwcGVuZFN1YnN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MCwxNSArMTUwLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAg
ICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5ndGgpOworICAg
ICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMo
c3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBpZiAoY2hh
cmFjdGVycykKLSAgICAgICAgICAgIGFwcGVuZChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVy
cykpOworICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBzdHJsZW4oY2hh
cmFjdGVycykpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKFVDaGFyIGMpCkBAIC0xNzksNyAr
MTc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBhcHBlbmQoJmMsIDEpOworICAgICAgICBhcHBlbmRDaGFyYWN0
ZXJzKCZjLCAxKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChMQ2hhciBjKQpAQCAtMTk0LDcg
KzE5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2J1ZmZlckNoYXJhY3RlcnMxNlts
ZW5ndGhdID0gYzsKICAgICAgICAgICAgIG1fbGVuZ3RoKys7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAgICAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoJmMs
IDEpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZj
aGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIHsgYXBwZW5kKGNoYXJhY3RlcnMsIGNoYXJhY3Rl
ckNvdW50IC0gMSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kTGl0ZXJhbChjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMo
Y2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kTnVtYmVyKGludCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YXBwZW5kTnVtYmVyKHVuc2lnbmVkKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgCiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nQnVpbGRlcj4gewogICAgIHVzaW5nIFJldHVyblR5
cGUgPSB2b2lkOwogICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSBTdHJpbmdCdWls
ZGVyOwotICAgIHN0YXRpYyB2b2lkIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFN0cmluZ0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBw
ZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0KKyAgICBzdGF0aWMgdm9pZCBmbHVzaChMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdCdWlsZGVyKiBzdHJpbmdCdWlsZGVy
KSB7IHN0cmluZ0J1aWxkZXItPmFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg0
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzOCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3Ry
aW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhl
IGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKC4uLikuCisg
ICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHRvIAorICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKworICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaXRo
UmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0
aWVzSW50ZXJuYWwpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6YXBwZW5kVG9TdHJpbmdCdWls
ZGVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZVdp
dGhIYXJkTGluZUJyZWFrcyBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpidWZmZXJlZENoYXJh
Y3RlcnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50
ZWRTdHJpbmc6OlN1YnN0cmluZzo6YXBwZW5kVG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6
ZGVjb2RlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d3JpdGVUb1N0cmluZ0J1aWxkZXIpOgorICAgICAgICBVcGRhdGUgZm9yIHJl
bmFtZXMuCisKIDIwMTktMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbml2ZXJzYWwgWFNTIGluIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93IGFuZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NDYsNyArOTQ2LDcgQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhcnQgPSBub2RlID09ICZzdGFydENvbnRhaW5lcigpID8gc3RkOjptaW4obV9zdGFydC5v
ZmZzZXQoKSwgbGVuZ3RoKSA6IDBVOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gbm9kZSA9
PSAmZW5kQ29udGFpbmVyKCkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0
KCkpLCBsZW5ndGgpIDogbGVuZ3RoOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwg
c3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU3Vic3RyaW5n
KGRhdGEsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDcgKzQyMCw3
IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UoY28KICAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSBzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgcmViYWxhbmNlZFN0cmluZy5yZXNlcnZlQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAgICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCByZWJhbGFuY2VkU3Ry
aW5nLmxlbmd0aCgpLCBpIC0gcmViYWxhbmNlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJl
YmFsYW5jZWRTdHJpbmcuYXBwZW5kU3Vic3RyaW5nKHN0cmluZywgcmViYWxhbmNlZFN0cmluZy5s
ZW5ndGgoKSwgaSAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICByZWJhbGFu
Y2VkU3RyaW5nLmFwcGVuZChzZWxlY3RlZFdoaXRlc3BhY2VDaGFyYWN0ZXIpOwogICAgIH0KIApA
QCAtNDI4LDcgKzQyOCw3IEBAIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2Uo
Y28KICAgICAgICAgcmV0dXJuIHN0cmluZzsKIAogICAgIHJlYmFsYW5jZWRTdHJpbmcucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCk7Ci0gICAgcmViYWxhbmNlZFN0cmluZy5hcHBlbmQoc3RyaW5nLCBy
ZWJhbGFuY2VkU3RyaW5nLmxlbmd0aCgpLCBsZW5ndGggLSByZWJhbGFuY2VkU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICByZWJhbGFuY2VkU3RyaW5nLmFwcGVuZFN1YnN0cmluZyhzdHJpbmcsIHJlYmFs
YW5jZWRTdHJpbmcubGVuZ3RoKCksIGxlbmd0aCAtIHJlYmFsYW5jZWRTdHJpbmcubGVuZ3RoKCkp
OwogICAgIHJldHVybiByZWJhbGFuY2VkU3RyaW5nLnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShyZXZpc2lvbiAy
NDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFw
cGVuZENoYXJhY3RlcnNSZXBsYQogICAgICAgICBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlciA9IHRl
eHRbaV07CiAgICAgICAgIHVpbnQ4X3Qgc3Vic3RpdHV0aW9uID0gY2hhcmFjdGVyIDwgV1RGX0FS
UkFZX0xFTkdUSChlbnRpdHlNYXApID8gZW50aXR5TWFwW2NoYXJhY3Rlcl0gOiBzdGF0aWNfY2Fz
dDx1aW50OF90PihFbnRpdHlTdWJzdGl0dXRpb25OdWxsSW5kZXgpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoc3Vic3RpdHV0aW9uICE9IEVudGl0eVN1YnN0aXR1dGlvbk51bGxJbmRleCkgJiYgZW50
aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLm1hc2sgJiBlbnRpdHlNYXNrKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwg
aSAtIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
ZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0eVN1
YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZENoYXJhY3RlcnModGV4dCArIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5LCBpIC0gcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rl
cnMoZW50aXR5U3Vic3RpdHV0aW9uTGlzdFtzdWJzdGl0dXRpb25dLmNoYXJhY3RlcnMsIGVudGl0
eVN1YnN0aXR1dGlvbkxpc3Rbc3Vic3RpdHV0aW9uXS5sZW5ndGgpOwogICAgICAgICAgICAgcG9z
aXRpb25BZnRlckxhc3RFbnRpdHkgPSBpICsgMTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXN1
bHQuYXBwZW5kKHRleHQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRp
b25BZnRlckxhc3RFbnRpdHkpOworICAgIHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXJzKHRleHQgKyBw
b3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgbGVuZ3RoIC0gcG9zaXRpb25BZnRlckxhc3RFbnRpdHkp
OwogfQogCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5n
RW50aXRpZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIEVudGl0eU1hc2sgZW50aXR5TWFzaykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI0ODQ5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0Ojph
cHBlbmRUb1MKICAgICBpZiAobV9zaW5nbGVDaGFyYWN0ZXIpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc2luZ2xlQ2hhcmFjdGVyKTsKICAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1fc3RyaW5nLCBtX29mZnNldCwgbV9sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZFN1
YnN0cmluZyhtX3N0cmluZywgbV9vZmZzZXQsIG1fbGVuZ3RoKTsKIH0KIAogLy8gLS0tLS0tLS0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDEzICs3MTcs
MTMgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp2YWx1ZQogICAgICAgICAg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwogICAgICAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9
PSBub2RlICYmIGJyZWFrT2Zmc2V0IDw9IGxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChi
cmVha09mZnNldCA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoZGF0YSwgcG9zaXRpb24sIGJyZWFrT2Zmc2V0IC0gcG9zaXRpb24pOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kU3Vic3RyaW5nKGRhdGEsIHBvc2l0aW9uLCBicmVha09mZnNl
dCAtIHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBicmVha09mZnNl
dDsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5l
LCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRTdWJzdHJpbmcoZGF0YSwgcG9zaXRpb24sIGxlbmd0aCAtIHBvc2l0
aW9uKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoYnJlYWtOb2RlID09IG5vZGUpCiAgICAg
ICAgICAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAJKHJl
dmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBTdHJpbmcgSFRNTFRv
a2VuaXplcjo6YnVmZmVyZWRDaGFyYWN0ZXJzCiAgICAgY2hhcmFjdGVycy5yZXNlcnZlQ2FwYWNp
dHkobnVtYmVyT2ZCdWZmZXJlZENoYXJhY3RlcnMoKSk7CiAgICAgY2hhcmFjdGVycy5hcHBlbmQo
JzwnKTsKICAgICBjaGFyYWN0ZXJzLmFwcGVuZCgnLycpOwotICAgIGNoYXJhY3RlcnMuYXBwZW5k
KG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEoKSwgbV90ZW1wb3JhcnlCdWZmZXIuc2l6ZSgpKTsKKyAg
ICBjaGFyYWN0ZXJzLmFwcGVuZENoYXJhY3RlcnMobV90ZW1wb3JhcnlCdWZmZXIuZGF0YSgpLCBt
X3RlbXBvcmFyeUJ1ZmZlci5zaXplKCkpOwogICAgIHJldHVybiBjaGFyYWN0ZXJzLnRvU3RyaW5n
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5h
dGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3
byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNj
b2duaXplZCB0aGlzIHN0cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciBoZWFkZXI7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0
YSkpLCBsZW5ndGgpOworICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoYXJhY3RlcnMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRI
ZWFkZXJEYXRhKSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBwZW5kKCJcblxuIik7
CiAKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJWVFQgaGVhZGVyICIsICZo
ZWFkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpT
dWJzdHJpbmc6OmFwcGVuZFRvKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAg
YnVpbGRlci5hcHBlbmQoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7
CisgICAgYnVpbGRlci5hcHBlbmRTdWJzdHJpbmcoc3RyaW5nLCBzdHJpbmcubGVuZ3RoKCkgLSBs
ZW5ndGgsIGxlbmd0aCk7CiB9CiAKIFNlZ21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3RyaW5nOjpv
cGVyYXRvcj0oU2VnbWVudGVkU3RyaW5nJiYgb3RoZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCShyZXZpc2lvbiAyNDg0OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw3ICszMDcsNyBAQCBTdHJpbmcgVGV4dENvZGVjSUNVOjpkZWNvZGUoY29uc3Qg
Y2hhciogCiAKICAgICBkbyB7CiAgICAgICAgIGludCB1Y2hhcnNEZWNvZGVkID0gZGVjb2RlVG9C
dWZmZXIoYnVmZmVyLCBidWZmZXJMaW1pdCwgc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywg
Zmx1c2gsIGVycik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3RlcnMoYnVmZmVyLCB1Y2hhcnNEZWNvZGVk
KTsKICAgICB9IHdoaWxlIChlcnIgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwogCiAgICAg
aWYgKFVfRkFJTFVSRShlcnIpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUv
UmVuZGVyVGhlbWVXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dwZS9SZW5kZXJUaGVtZVdQRS5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dwZS9SZW5kZXJUaGVtZVdQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDggKzU4LDggQEAgU3RyaW5nIFJlbmRlclRoZW1lV1BFOjptZWRpYUNvbnRyb2xzU3R5bAogU3Ry
aW5nIFJlbmRlclRoZW1lV1BFOjptZWRpYUNvbnRyb2xzU2NyaXB0KCkKIHsKICAgICBTdHJpbmdC
dWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBlbmQobWVkaWFDb250
cm9sc0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0xvY2Fs
aXplZFN0cmluZ3NKYXZhU2NyaXB0KSk7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBlbmQobWVkaWFD
b250cm9sc0Jhc2VKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0Jhc2VKYXZhU2NyaXB0
KSk7CisgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lZGlhQ29udHJvbHNMb2Nh
bGl6ZWRTdHJpbmdzSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzSmF2YVNjcmlwdCkpOworICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZWRp
YUNvbnRyb2xzQmFzZUphdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmFzZUphdmFTY3Jp
cHQpKTsKICAgICByZXR1cm4gc2NyaXB0QnVpbGRlci50b1N0cmluZygpOwogfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAJKHJldmlz
aW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTIsOSArMTIxMiw5IEBAIFN0cmluZyBSZW5kZXJUaGVt
ZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2kKIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6bWVkaWFDb250
cm9sc1NjcmlwdCgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzSmF2YVNjcmlw
dCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzSmF2YVNjcmlwdCkpOwotICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCwgc2l6ZW9m
KG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCkpOwotICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5k
KG1lZGlhQ29udHJvbHNHdGtKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0d0a0phdmFT
Y3JpcHQpKTsKKyAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVkaWFDb250cm9s
c0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0xvY2FsaXpl
ZFN0cmluZ3NKYXZhU2NyaXB0KSk7CisgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJz
KG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCYXNlSmF2
YVNjcmlwdCkpOworICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZWRpYUNvbnRy
b2xzR3RrSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNHdGtKYXZhU2NyaXB0KSk7CiAg
ICAgcmV0dXJuIHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgaW50
IHdyaXRlVG9TdHJpbmdCdWlsZGVyKHZvaWQqIGNvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXN1bHRPdXRwdXQuYXBwZW5kKG91dHB1dEJ1ZmZlci5kYXRhKCksIG91dHB1dE9mZnNldCk7Cisg
ICAgcmVzdWx0T3V0cHV0LmFwcGVuZENoYXJhY3RlcnMob3V0cHV0QnVmZmVyLmRhdGEoKSwgb3V0
cHV0T2Zmc2V0KTsKICAgICByZXR1cm4gaW5wdXRPZmZzZXQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDg0OTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIG11bHRpcGFyYW1ldGVyIG92ZXJsb2FkcyBvZiBhcHBl
bmQoKSBpbiBTdHJpbmdCdWlsZGVyIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgc3RhbmRhcmRpemlu
Z2luZyBvbiB0aGUgZmxleGlibGVBcHBlbmQoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjE0CisKKyAgICAgICAgUmVu
YW1lcyBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCksIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkKSBhbmQgCisgICAgICAgIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpIHRvIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZENoYXJhY3RlcnMoLi4uKS4KKyAgICAgICAgCisgICAgICAgIFJlbmFtZXMgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgdG8gCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFN1YnN0
cmluZyguLi4pLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIFVwZGF0
ZSBmb3IgcmVuYW1lcy4KKwogMjAxOS0wOC0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDEzXSBHb29nbGUgRG9jcy9TbGlkZXMvU2hlZXRz
OiBwYXN0ZSBvZnRlbiBkb2Vzbid0IHdvcmsgYW5kIHNvbWV0aW1lcyBwcm9kdWNlcyBhbiBlcnJv
cgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NN
YWMubW0JKHJldmlzaW9uIDI0ODQ5NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhp
bGlhcnlQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsMTYgKzIzNCwxNiBAQCBz
dGF0aWMgT3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFsaXplCiAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwgZ2V0
cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSwgc3RybGVuKG5hbWUpKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG5hbWUsIHN0cmxlbihuYW1lKSk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLCBzdHJs
ZW4odmFsdWUpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKHZhbHVlLCBzdHJs
ZW4odmFsdWUpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICB9CiAgICAgaWYg
KGlzUHJvZmlsZVBhdGgpIHsKICAgICAgICAgYXV0byBjb250ZW50cyA9IGZpbGVDb250ZW50cyhw
cm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgICAgIGlmICghY29udGVudHMpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBidWlsZGVyLmFwcGVuZChjb250ZW50cy0+
ZGF0YSgpLCBjb250ZW50cy0+c2l6ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0
ZXJzKGNvbnRlbnRzLT5kYXRhKCksIGNvbnRlbnRzLT5zaXplKCkpOwogICAgIH0gZWxzZQogICAg
ICAgICBidWlsZGVyLmFwcGVuZChwcm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKS5hc2NpaSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjQ4NDk1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsOSArNzky
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAg
ICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0
YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSk7CisgICAgbWVzc2FnZU5hbWVTdHJpbmdC
dWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZVJlY2VpdmVyTmFtZS5kYXRhKCksIG1lc3Nh
Z2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKICAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCcuJyk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZChtZXNzYWdlTmFt
ZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7CisgICAgbWVzc2FnZU5hbWVTdHJpbmdCdWls
ZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXpl
KCkpOwogCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpj
cmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigpKSk7CiB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDg1MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxOS0wOC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBtdWx0aXBhcmFtZXRlciBvdmVybG9hZHMgb2YgYXBwZW5kKCkgaW4gU3Ry
aW5nQnVpbGRlciBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkIHN0YW5kYXJkaXppbmdpbmcgb24gdGhl
IGZsZXhpYmxlQXBwZW5kKCkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZXMgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpLCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCkgYW5kIAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hh
ciosIHVuc2lnbmVkKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKC4uLikuCisg
ICAgICAgIAorICAgICAgICBSZW5hbWVzIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHRvIAorICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmRTdWJzdHJpbmcoLi4uKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lcy4KKwogMjAxOS0wOC0wOSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBLZXlib2Fy
ZElucHV0VGVzdHMuQ2FyZXRTZWxlY3Rpb25SZWN0QWZ0ZXJSZXN0b3JpbmdGaXJzdFJlc3BvbmRl
ciBBUEkgdGVzdHMgdGltZSBvdXQgb24gaVBhZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDEyMzQ1Njc4OSIsIGJ1aWxkZXIpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCJhYmNkIik7CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlh
YmNkIiwgYnVpbGRlcik7Ci0gICAgYnVpbGRlci5hcHBlbmQoImVmZ2giLCAzKTsKKyAgICBidWls
ZGVyLmFwcGVuZENoYXJhY3RlcnMoImVmZ2giLCAzKTsKICAgICBleHBlY3RCdWlsZGVyQ29udGVu
dCgiMDEyMzQ1Njc4OWFiY2RlZmciLCBidWlsZGVyKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIik7
CiAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZWZnIiwgYnVpbGRlcik7
CkBAIC03MywxMSArNzMsMTEgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgQXBwZW5kKQogCiAg
ICAgYnVpbGRlci50b1N0cmluZygpOyAvLyBUZXN0IGFmdGVyIHJlaWZ5U3RyaW5nKCkuCiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyMTsKLSAgICBidWlsZGVyLmFwcGVuZCgiIiwgMCk7CisgICAg
YnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKCIiLCAwKTsKICAgICBleHBlY3RCdWlsZGVyQ29udGVu
dCgiMDEyMzQ1Njc4OWFiY2RlZmcjIiwgYnVpbGRlcik7Ci0gICAgYnVpbGRlcjEuYXBwZW5kKGJ1
aWxkZXIuY2hhcmFjdGVyczgoKSwgYnVpbGRlci5sZW5ndGgoKSk7CisgICAgYnVpbGRlcjEuYXBw
ZW5kQ2hhcmFjdGVycyhidWlsZGVyLmNoYXJhY3RlcnM4KCksIGJ1aWxkZXIubGVuZ3RoKCkpOwog
ICAgIGJ1aWxkZXIxLmFwcGVuZCgiWFlaIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlcjEu
Y2hhcmFjdGVyczgoKSwgYnVpbGRlcjEubGVuZ3RoKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhidWlsZGVyMS5jaGFyYWN0ZXJzOCgpLCBidWlsZGVyMS5sZW5ndGgoKSk7CiAgICAg
ZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAxMjM0NTY3ODlhYmNkZWZnIzAxMjM0NTY3ODlhYmNkZWZn
I1hZWiIsIGJ1aWxkZXIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMjsKQEAgLTEwNCwx
MiArMTA0LDEyIEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyMjsKICAgICAgICAgVUNoYXIzMiBmcmFrdHVyQUNoYXIgPSAweDFE
NTA0OwogICAgICAgICBjb25zdCBVQ2hhciBkYXRhW10gPSB7IFUxNl9MRUFEKGZyYWt0dXJBQ2hh
ciksIFUxNl9UUkFJTChmcmFrdHVyQUNoYXIpIH07Ci0gICAgICAgIGJ1aWxkZXIyLmFwcGVuZChk
YXRhLCAyKTsKKyAgICAgICAgYnVpbGRlcjIuYXBwZW5kQ2hhcmFjdGVycyhkYXRhLCAyKTsKICAg
ICAgICAgQVNTRVJUX0VRKDJVLCBidWlsZGVyMi5sZW5ndGgoKSk7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQyID0gYnVpbGRlcjIudG9TdHJpbmcoKTsKICAgICAgICAgQVNTRVJUX0VRKDJVLCByZXN1
bHQyLmxlbmd0aCgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlcjIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChkYXRhLCAyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0
ZXJzKGRhdGEsIDIpOwogICAgICAgICBBU1NFUlRfRVEoNFUsIGJ1aWxkZXIubGVuZ3RoKCkpOwog
ICAgICAgICBjb25zdCBVQ2hhciByZXN1bHRBcnJheVtdID0geyBVMTZfTEVBRChmcmFrdHVyQUNo
YXIpLCBVMTZfVFJBSUwoZnJha3R1ckFDaGFyKSwgVTE2X0xFQUQoZnJha3R1ckFDaGFyKSwgVTE2
X1RSQUlMKGZyYWt0dXJBQ2hhcikgfTsKICAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoU3Ry
aW5nKHJlc3VsdEFycmF5LCBXVEZfQVJSQVlfTEVOR1RIKHJlc3VsdEFycmF5KSksIGJ1aWxkZXIp
OwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvQXRvbVN0cmlu
Z09uRW0KICAgICB9CiAgICAgeyAvLyBBdG9tU3RyaW5nIGNvbnN0cnVjdGVkIGZyb20gYW4gZW1w
dHkgY2hhciogc3RyaW5nLgogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIiLCAwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJz
KCIiLCAwKTsKICAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRlci50b0F0b21T
dHJpbmcoKTsKICAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3RyaW5nKTsKICAg
ICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0ODQ5NSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSwxNCArMjcxLDE0IEBAIFN0cmluZyBnZW5lcmF0
ZUhUTUxDb250ZW50KHVuc2lnbmVkIGNvbnQKICAgICBidWlsZGVyLmFwcGVuZCgiPGh0bWw+PGJv
ZHk+Iik7CiAKICAgICBpZiAoY29udGVudExlbmd0aCA8PSBiYXNlTGVuZ3RoKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZChiYXNlU3RyaW5nLCAwLCBjb250ZW50TGVuZ3RoKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRTdWJzdHJpbmcoYmFzZVN0cmluZywgMCwgY29udGVudExlbmd0aCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSAwOwogICAgICAgICB3aGls
ZSAoY3VycmVudExlbmd0aCA8IGNvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgICAgIGlmICgoY3Vy
cmVudExlbmd0aCArIGJhc2VMZW5ndGgpIDw9IGNvbnRlbnRMZW5ndGgpCiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoYmFzZVN0cmluZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmFzZVN0cmluZywgMCwgY29udGVudExlbmd0aCAtIGN1
cnJlbnRMZW5ndGgpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU3Vic3RyaW5nKGJh
c2VTdHJpbmcsIDAsIGNvbnRlbnRMZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIAogICAgICAgICAg
ICAgLy8gQWNjb3VudCBmb3IgdGhlIDEyIGNoYXJhY3RlcnMgb2YgdGhlICc8aHRtbD48Ym9keT4n
IHByZWZpeC4KICAgICAgICAgICAgIGN1cnJlbnRMZW5ndGggPSBidWlsZGVyLmxlbmd0aCgpIC0g
MTI7Cg==
</data>
<flag name="review"
          id="391798"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="391799"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>