<?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>212366</bug_id>
          
          <creation_ts>2020-05-25 20:43:53 -0700</creation_ts>
          <short_desc>Extended Color Cleanup: Remove red()/green()/blue() accessors from ExtendedColor in preperation for supporting non-RGB based ColorSpaces</short_desc>
          <delta_ts>2020-05-26 10:57:15 -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>darin</cc>
    
    <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655968</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-25 20:43:53 -0700</bug_when>
    <thetext>Extended Color Cleanup: Remove red()/green()/blue() accessors from ExtendedColor in preperation for supporting non-RGB based ColorSpaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655971</commentid>
    <comment_count>1</comment_count>
      <attachid>400229</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-25 20:52:44 -0700</bug_when>
    <thetext>Created attachment 400229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655973</commentid>
    <comment_count>2</comment_count>
      <attachid>400230</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-25 21:27:03 -0700</bug_when>
    <thetext>Created attachment 400230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656036</commentid>
    <comment_count>3</comment_count>
      <attachid>400245</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-26 07:59:58 -0700</bug_when>
    <thetext>Created attachment 400245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656045</commentid>
    <comment_count>4</comment_count>
      <attachid>400250</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-26 08:31:47 -0700</bug_when>
    <thetext>Created attachment 400250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656092</commentid>
    <comment_count>5</comment_count>
      <attachid>400250</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-26 10:41:22 -0700</bug_when>
    <thetext>Comment on attachment 400250
Patch

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

&gt; Source/WebCore/platform/graphics/ExtendedColor.cpp:91
&gt; +bool ExtendedColor::isWhite() const
&gt; +{
&gt; +    auto [c1, c2, c3, alpha] = channels();
&gt; +    return c1 == 1 &amp;&amp; c2 == 1 &amp;&amp; c3 == 1 &amp;&amp; alpha == 1;
&gt; +}
&gt; +
&gt; +bool ExtendedColor::isBlack() const
&gt; +{
&gt; +    auto [c1, c2, c3, alpha] = channels();
&gt; +    return !c1 &amp;&amp; !c2 &amp;&amp; !c3 &amp;&amp; alpha == 1;
&gt;  }

These will be wrong for some non-RGB colorspaces, but we don&apos;t have any yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656096</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-26 10:53:02 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 400250 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400250&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ExtendedColor.cpp:91
&gt; &gt; +bool ExtendedColor::isWhite() const
&gt; &gt; +{
&gt; &gt; +    auto [c1, c2, c3, alpha] = channels();
&gt; &gt; +    return c1 == 1 &amp;&amp; c2 == 1 &amp;&amp; c3 == 1 &amp;&amp; alpha == 1;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool ExtendedColor::isBlack() const
&gt; &gt; +{
&gt; &gt; +    auto [c1, c2, c3, alpha] = channels();
&gt; &gt; +    return !c1 &amp;&amp; !c2 &amp;&amp; !c3 &amp;&amp; alpha == 1;
&gt; &gt;  }
&gt; 
&gt; These will be wrong for some non-RGB colorspaces, but we don&apos;t have any yet.

Right, that&apos;s why I moved it to ExtendedColor. So that when we have Lab (or whatever) we have a single place to implement all these predicates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656098</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-26 10:56:38 -0700</bug_when>
    <thetext>Committed r262151: &lt;https://trac.webkit.org/changeset/262151&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400250.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656099</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-26 10:57:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63631217&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400229</attachid>
            <date>2020-05-25 20:52:44 -0700</date>
            <delta_ts>2020-05-25 21:27:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212366-20200525205243.patch</filename>
            <type>text/plain</type>
            <size>11368</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTI1ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBSZW1vdmUgcmVkKCkvZ3JlZW4oKS9ibHVlKCkgYWNjZXNzb3JzIGZyb20gRXh0ZW5kZWRDb2xv
ciBpbiBwcmVwZXJhdGlvbiBmb3Igc3VwcG9ydGluZyBub24tUkdCIGJhc2VkIENvbG9yU3BhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzNjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVh
cmVkKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIHRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkg
cmF0aGVyIHRoYW4gcG9raW5nIGF0IHRoZSBFeHRlbmRlZENvbG9yCisgICAgICAgIGNvbXBvbmVu
dHMgZGlyZWN0bHkuIFRoZSBvbGQgY29kZSB3YXMgYWxyZWFkeSBpbmNvcnJlY3QgaWYgdGhlIHR3
byBjb2xvcnMgaGFkIAorICAgICAgICBkaWZmZXJpbmcgY29sb3Igc3BhY2VzIHNvIHRoaXMgYXQg
bGVhc3Qgbm93IGdpdmVzIHJlYXNvbmFibGUgcmVzdWx0cy4KKworICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpj
b2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyBjb25zdCk6CisgICAgICAgIERl
bGVnYXRlIHRvIEV4dGVuZGVkQ29sb3IgY29tcGxldGVseSBmb3IgY29sb3JXaXRoQWxwaGEoKSB0
byBhbGxvdyBmb3IgbW9yZQorICAgICAgICBjb250cm9sIG92ZXIgaG93IHRoZSBjb21wb25lbnRz
IG1pZ2h0IGJlIHN0b3JlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzQmxhY2tD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNXaGl0ZUNvbG9yKToKKyAgICAgICAg
RGVsZWdhdGUgdG8gRXh0ZW5kZWRDb2xvciBmb3IgaXNCbGFjaygpL2lzV2hpdGUoKSB0byBhbGxv
dyBwZXItY29sb3Igc3BhY2UKKyAgICAgICAgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBwcmVkaWNh
dGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmRlY29kZSk6CisgICAgICAgIFVzZSBjMSwgYzIsIGMzIHJhdGhlciB0
aGFuIHJlZC9ncmVlbi9ibHVlLiBUaGlzIHNob3VsZCBiZSBhY2NlcHRhYmxlIGZvciB0aGUKKyAg
ICAgICAgZm9yc2VlYWJsZSBmdXR1cmUsIGFzIGFsbCBleHBlY3RlZCBjb2xvcnNwYWNlcyBvbmx5
IGhhdmUgMyBjaGFubmVscywgYnV0IGF0IAorICAgICAgICBzb21lIHBvaW50LCBpdCBtYXkgbWFr
ZSBzZW5zZSB0byBkZWxlZ2F0ZSBjb2RpbmcgdG8gRXh0ZW5kZWRDb2xvciBjb21wbGV0ZWx5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
ZWRDb2xvcjo6cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmdyZWVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmJsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzV2hpdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzQmxhY2sgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgVXNlIGNoYW5uZWxz
KCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzIHJhdGhlciB0aGFuIHRoZSByZWQoKS9ncmVlbigp
L2JsdWUoKSBhY2Nlc3NvcnMKKyAgICAgICAgZXZlcnl3aGVyZS4KKwogMjAyMC0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYW4gT3B0
aW9uYWw8PiBmb3IgTGF5ZXJGcmFnbWVudDo6Ym91bmRpbmdCb3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTYgKzQxLDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRX
aGkKIAogaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBjMSwgY29uc3QgQ29sb3Im
IGMyKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIGNvbG9ycyBh
cmUgaW4gdGhlIHNhbWUgY29sb3JzcGFjZS4KKyAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAt
IG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0IG1hbnkgb2YgdGhl
IGNhbGwKICAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBjb21wYXJpc29uIHZhbHVlcyBiYXNlZCBv
biBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0CiAgICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJs
ZXMgdG8gY2hhbmdlIHRoZW0gOikKLSAgICBpbnQgYzFSZWQgPSBjMS5pc0V4dGVuZGVkKCkgPyBj
MS5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMS5hc1NpbXBsZUNvbG9yKCkucmVkQ29tcG9u
ZW50KCk7Ci0gICAgaW50IGMxR3JlZW4gPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSAqIDI1NSA6IGMxLmFzU2ltcGxlQ29sb3IoKS5ncmVlbkNvbXBvbmVudCgpOwot
ICAgIGludCBjMUJsdWUgPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVkKCkuYmx1ZSgp
ICogMjU1IDogYzEuYXNTaW1wbGVDb2xvcigpLmJsdWVDb21wb25lbnQoKTsKLSAgICBpbnQgYzJS
ZWQgPSBjMi5pc0V4dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMi5h
c1NpbXBsZUNvbG9yKCkucmVkQ29tcG9uZW50KCk7Ci0gICAgaW50IGMyR3JlZW4gPSBjMi5pc0V4
dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSAqIDI1NSA6IGMyLmFzU2ltcGxlQ29s
b3IoKS5ncmVlbkNvbXBvbmVudCgpOwotICAgIGludCBjMkJsdWUgPSBjMi5pc0V4dGVuZGVkKCkg
PyBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpICogMjU1IDogYzIuYXNTaW1wbGVDb2xvcigpLmJsdWVD
b21wb25lbnQoKTsKKworICAgIGF1dG8gW2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFd
ID0gYzEudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKKyAgICBhdXRvIFtjMlJlZCwgYzJCbHVl
LCBjMkdyZWVuLCBjMkFscGhhXSA9IGMyLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisKICAg
ICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVkOwogICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVu
OwogICAgIGludCBkQiA9IGMxQmx1ZSAtIGMyQmx1ZTsKQEAgLTMwOSwxMCArMzA3LDggQEAgQ29s
b3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5VQogCiBDb2xvciBDb2xvcjo6Y29s
b3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkg
ewotICAgICAgICBhdXRvJiBleHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwotICAgICAgICBy
ZXR1cm4gQ29sb3IgeyBleHRlbmRlZENvbG9yLnJlZCgpLCBleHRlbmRlZENvbG9yLmdyZWVuKCks
IGV4dGVuZGVkQ29sb3IuYmx1ZSgpLCBhbHBoYSwgZXh0ZW5kZWRDb2xvci5jb2xvclNwYWNlKCkg
fTsKLSAgICB9CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5k
ZWQoKS5jb2xvcldpdGhBbHBoYShhbHBoYSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3aGVy
ZSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSBjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRp
dmVSb3VuZGluZy4KICAgICB1aW50OF90IG5ld0FscGhhID0gYWxwaGEgKiAweEZGOwpAQCAtMzI1
LDEwICszMjEsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAK
IENvbG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhmbG9h
dCBhbHBoYSkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIGF1dG8m
IGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IGV4
dGVuZGVkQ29sb3IucmVkKCksIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSwgZXh0ZW5kZWRDb2xvci5i
bHVlKCksIGFscGhhLCBleHRlbmRlZENvbG9yLmNvbG9yU3BhY2UoKSB9OwotICAgIH0KKyAgICBp
ZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNvbG9yV2l0aEFs
cGhhKGFscGhhKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24g
ZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmcuCiAgICAgdWludDhfdCBuZXdBbHBoYSA9
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywy
MSArMzM3LDE1IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRTaW1wbGVDb2xvcihTaW1wbGUKIAog
aW5saW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBjb25zdCBFeHRlbmRlZENvbG9y
JiBleHRlbmRlZENvbG9yID0gY29sb3IuYXNFeHRlbmRlZCgpOwotICAgICAgICByZXR1cm4gIWV4
dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRD
b2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7Ci0gICAgfQotCisgICAg
aWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQo
KS5pc0JsYWNrKCk7CiAgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6
YmxhY2s7CiB9CiAKIGlubGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIGlmIChjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgY29uc3Qg
RXh0ZW5kZWRDb2xvciYgZXh0ZW5kZWRDb2xvciA9IGNvbG9yLmFzRXh0ZW5kZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGV4dGVuZGVkQ29sb3IucmVkKCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmdyZWVu
KCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmJsdWUoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYWxw
aGEoKSA9PSAxOwotICAgIH0KLSAgICAKKyAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQorICAg
ICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hpdGUoKTsKICAgICByZXR1cm4gY29s
b3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsKIH0KIApAQCAtMzYwLDExICszNTQs
MTQgQEAgdm9pZCBDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogewogICAgIGlm
IChpc0V4dGVuZGVkKCkpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgICAgICBlbmNv
ZGVyIDw8IGFzRXh0ZW5kZWQoKS5yZWQoKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVk
KCkuZ3JlZW4oKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVkKCkuYmx1ZSgpOwotICAg
ICAgICBlbmNvZGVyIDw8IGFzRXh0ZW5kZWQoKS5hbHBoYSgpOwotICAgICAgICBlbmNvZGVyIDw8
IGFzRXh0ZW5kZWQoKS5jb2xvclNwYWNlKCk7CisKKyAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xv
ciA9IGFzRXh0ZW5kZWQoKTsKKyAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0
ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBlbmNvZGVyIDw8IGMxOworICAgICAgICBl
bmNvZGVyIDw8IGMyOworICAgICAgICBlbmNvZGVyIDw8IGMzOworICAgICAgICBlbmNvZGVyIDw8
IGFscGhhOworICAgICAgICBlbmNvZGVyIDw8IGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODksMjIgKzM4NiwyMiBAQCBPcHRpb25hbDxD
b2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICBpZiAoaXNFeHRlbmRlZCkgewotICAgICAgICBmbG9hdCByZWQ7Ci0gICAgICAg
IGZsb2F0IGdyZWVuOwotICAgICAgICBmbG9hdCBibHVlOworICAgICAgICBmbG9hdCBjMTsKKyAg
ICAgICAgZmxvYXQgYzI7CisgICAgICAgIGZsb2F0IGMzOwogICAgICAgICBmbG9hdCBhbHBoYTsK
ICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlZCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzEpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShncmVlbikp
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzIpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibHVlKSkKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjMykpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gQ29sb3Ig
eyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwgY29sb3JTcGFjZSB9OworICAgICAgICByZXR1cm4g
Q29sb3IgeyBFeHRlbmRlZENvbG9yOjpjcmVhdGUoYzEsIGMyLCBjMywgYWxwaGEsIGNvbG9yU3Bh
Y2UpIH07CiAgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI2
MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBAIFJlZjxFeHRlbmRlZENvbG9yPiBF
eHRlbmRlZENvbG9yOjpjcmVhdGUKIAogdW5zaWduZWQgRXh0ZW5kZWRDb2xvcjo6aGFzaCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVIYXNoKG1fY2hhbm5lbHMuY29tcG9uZW50c1swXSwg
bV9jaGFubmVscy5jb21wb25lbnRzWzFdLCBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMl0sIG1fY2hh
bm5lbHMuY29tcG9uZW50c1szXSwgbV9jb2xvclNwYWNlKTsKKyAgICBhdXRvIFtjMSwgYzIsIGMz
LCBhbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBjb21wdXRlSGFzaChjMSwgYzIsIGMz
LCBhbHBoYSwgbV9jb2xvclNwYWNlKTsKIH0KIAogU3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1Rl
eHQoKSBjb25zdApAQCAtNTcsMTYgKzU4LDM2IEBAIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdURjo6ZW1wdHlTdHJpbmcoKTsKICAgICB9CiAK
KyAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNoYW5uZWxzKCk7CisKICAg
ICBpZiAoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGFscGhhKCksIDEuMGYpKQotICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygiY29sb3IoIiwgY29sb3JTcGFjZSwgJyAnLCByZWQoKSwgJyAnLCBn
cmVlbigpLCAnICcsIGJsdWUoKSwgJyknKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNv
bG9yKCIsIGNvbG9yU3BhY2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICcpJyk7CisKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiY29sb3IoIiwgY29sb3JTcGFjZSwgJyAnLCBjMSwgJyAnLCBj
MiwgJyAnLCBjMywgIiAvICIsIGV4aXN0aW5nQWxwaGEsICcpJyk7Cit9CiAKLSAgICByZXR1cm4g
bWFrZVN0cmluZygiY29sb3IoIiwgY29sb3JTcGFjZSwgJyAnLCByZWQoKSwgJyAnLCBncmVlbigp
LCAnICcsIGJsdWUoKSwgIiAvICIsIGFscGhhKCksICcpJyk7CitSZWY8RXh0ZW5kZWRDb2xvcj4g
RXh0ZW5kZWRDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgb3ZlcnJpZGVBbHBoYSkgY29uc3QK
K3sKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBleGlzdGluZ0FscGhhXSA9IGNoYW5uZWxzKCk7Cisg
ICAgcmV0dXJuIEV4dGVuZGVkQ29sb3I6OmNyZWF0ZShjMSwgYzIsIGMzLCBvdmVycmlkZUFscGhh
LCBjb2xvclNwYWNlKCkpOwogfQogCi1SZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkgY29uc3QKK1JlZjxFeHRlbmRlZENv
bG9yPiBFeHRlbmRlZENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0IG92ZXJyaWRl
QWxwaGEpIGNvbnN0CiB7CiAgICAgYXV0byBbYzEsIGMyLCBjMywgZXhpc3RpbmdBbHBoYV0gPSBj
aGFubmVscygpOwotICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoMS4wZiAtIGMxLCAx
LjBmIC0gYzIsIDEuMGYgLSBjMywgYWxwaGEsIGNvbG9yU3BhY2UoKSk7CisgICAgcmV0dXJuIEV4
dGVuZGVkQ29sb3I6OmNyZWF0ZSgxLjBmIC0gYzEsIDEuMGYgLSBjMiwgMS4wZiAtIGMzLCBvdmVy
cmlkZUFscGhhLCBjb2xvclNwYWNlKCkpOworfQorCitib29sIEV4dGVuZGVkQ29sb3I6OmlzV2hp
dGUoKSBjb25zdAoreworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNoYW5uZWxzKCk7
CisgICAgcmV0dXJuIGMxID09IDEgJiYgYzIgPT0gMSAmJiBjMyA9PSAxICYmIGFscGhhID09IDE7
Cit9CisKK2Jvb2wgRXh0ZW5kZWRDb2xvcjo6aXNCbGFjaygpIGNvbnN0Cit7CisgICAgYXV0byBb
YzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsKKyAgICByZXR1cm4gIWMxICYmICFjMiAm
JiAhYzMgJiYgYWxwaGEgPT0gMTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkocmV2aXNpb24gMjYyMTM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9y
U3BhY2UuaCIKLQogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOCwzMyArMzcsMjEgQEAgY2xh
c3MgRXh0ZW5kZWRDb2xvciA6IHB1YmxpYyBSZWZDb3VudGVkPAogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RXh0ZW5kZWRDb2xvcj4gY3JlYXRlKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0IGFs
cGhhLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQik7CiAKLSAgICBmbG9hdCByZWQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1swXTsKLSAg
ICB9Ci0KLSAgICBmbG9hdCBncmVlbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9j
aGFubmVscy5jb21wb25lbnRzWzFdOwotICAgIH0KLQotICAgIGZsb2F0IGJsdWUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1syXTsKLSAgICB9Ci0K
ICAgICBmbG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1sz
XTsgfQogCiAgICAgY29uc3QgRmxvYXRDb21wb25lbnRzJiBjaGFubmVscygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhbm5lbHM7IH0KLQogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaGFz
aCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
IAorICAgIFJlZjxFeHRlbmRlZENvbG9yPiBjb2xvcldpdGhBbHBoYShmbG9hdCkgY29uc3Q7CiAg
ICAgUmVmPEV4dGVuZGVkQ29sb3I+IGludmVydGVkQ29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0
OwogCisgICAgYm9vbCBpc1doaXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0JsYWNrKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgRXh0ZW5kZWRDb2xvcihmbG9hdCBjMSwgZmxvYXQgYzIsIGZsb2F0
IGMzLCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgICAgICA6IG1fY2hh
bm5lbHMoYzEsIGMyLCBjMywgYWxwaGEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400230</attachid>
            <date>2020-05-25 21:27:03 -0700</date>
            <delta_ts>2020-05-26 07:59:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212366-20200525212703.patch</filename>
            <type>text/plain</type>
            <size>11345</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTI1ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBSZW1vdmUgcmVkKCkvZ3JlZW4oKS9ibHVlKCkgYWNjZXNzb3JzIGZyb20gRXh0ZW5kZWRDb2xv
ciBpbiBwcmVwZXJhdGlvbiBmb3Igc3VwcG9ydGluZyBub24tUkdCIGJhc2VkIENvbG9yU3BhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzNjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVh
cmVkKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIHRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkg
cmF0aGVyIHRoYW4gcG9raW5nIGF0IHRoZSBFeHRlbmRlZENvbG9yCisgICAgICAgIGNvbXBvbmVu
dHMgZGlyZWN0bHkuIFRoZSBvbGQgY29kZSB3YXMgYWxyZWFkeSBpbmNvcnJlY3QgaWYgdGhlIHR3
byBjb2xvcnMgaGFkIAorICAgICAgICBkaWZmZXJpbmcgY29sb3Igc3BhY2VzIHNvIHRoaXMgYXQg
bGVhc3Qgbm93IGdpdmVzIHJlYXNvbmFibGUgcmVzdWx0cy4KKworICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpj
b2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyBjb25zdCk6CisgICAgICAgIERl
bGVnYXRlIHRvIEV4dGVuZGVkQ29sb3IgY29tcGxldGVseSBmb3IgY29sb3JXaXRoQWxwaGEoKSB0
byBhbGxvdyBmb3IgbW9yZQorICAgICAgICBjb250cm9sIG92ZXIgaG93IHRoZSBjb21wb25lbnRz
IG1pZ2h0IGJlIHN0b3JlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzQmxhY2tD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNXaGl0ZUNvbG9yKToKKyAgICAgICAg
RGVsZWdhdGUgdG8gRXh0ZW5kZWRDb2xvciBmb3IgaXNCbGFjaygpL2lzV2hpdGUoKSB0byBhbGxv
dyBwZXItY29sb3Igc3BhY2UKKyAgICAgICAgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBwcmVkaWNh
dGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmRlY29kZSk6CisgICAgICAgIFVzZSBjMSwgYzIsIGMzIHJhdGhlciB0
aGFuIHJlZC9ncmVlbi9ibHVlLiBUaGlzIHNob3VsZCBiZSBhY2NlcHRhYmxlIGZvciB0aGUKKyAg
ICAgICAgZm9yc2VlYWJsZSBmdXR1cmUsIGFzIGFsbCBleHBlY3RlZCBjb2xvcnNwYWNlcyBvbmx5
IGhhdmUgMyBjaGFubmVscywgYnV0IGF0IAorICAgICAgICBzb21lIHBvaW50LCBpdCBtYXkgbWFr
ZSBzZW5zZSB0byBkZWxlZ2F0ZSBjb2RpbmcgdG8gRXh0ZW5kZWRDb2xvciBjb21wbGV0ZWx5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
ZWRDb2xvcjo6cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmdyZWVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmJsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzV2hpdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzQmxhY2sgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgVXNlIGNoYW5uZWxz
KCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzIHJhdGhlciB0aGFuIHRoZSByZWQoKS9ncmVlbigp
L2JsdWUoKSBhY2Nlc3NvcnMKKyAgICAgICAgZXZlcnl3aGVyZS4KKwogMjAyMC0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYW4gT3B0
aW9uYWw8PiBmb3IgTGF5ZXJGcmFnbWVudDo6Ym91bmRpbmdCb3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTYgKzQxLDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRX
aGkKIAogaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBjMSwgY29uc3QgQ29sb3Im
IGMyKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIGNvbG9ycyBh
cmUgaW4gdGhlIHNhbWUgY29sb3JzcGFjZS4KKyAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAt
IG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0IG1hbnkgb2YgdGhl
IGNhbGwKICAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBjb21wYXJpc29uIHZhbHVlcyBiYXNlZCBv
biBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0CiAgICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJs
ZXMgdG8gY2hhbmdlIHRoZW0gOikKLSAgICBpbnQgYzFSZWQgPSBjMS5pc0V4dGVuZGVkKCkgPyBj
MS5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMS5hc1NpbXBsZUNvbG9yKCkucmVkQ29tcG9u
ZW50KCk7Ci0gICAgaW50IGMxR3JlZW4gPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSAqIDI1NSA6IGMxLmFzU2ltcGxlQ29sb3IoKS5ncmVlbkNvbXBvbmVudCgpOwot
ICAgIGludCBjMUJsdWUgPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVkKCkuYmx1ZSgp
ICogMjU1IDogYzEuYXNTaW1wbGVDb2xvcigpLmJsdWVDb21wb25lbnQoKTsKLSAgICBpbnQgYzJS
ZWQgPSBjMi5pc0V4dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMi5h
c1NpbXBsZUNvbG9yKCkucmVkQ29tcG9uZW50KCk7Ci0gICAgaW50IGMyR3JlZW4gPSBjMi5pc0V4
dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSAqIDI1NSA6IGMyLmFzU2ltcGxlQ29s
b3IoKS5ncmVlbkNvbXBvbmVudCgpOwotICAgIGludCBjMkJsdWUgPSBjMi5pc0V4dGVuZGVkKCkg
PyBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpICogMjU1IDogYzIuYXNTaW1wbGVDb2xvcigpLmJsdWVD
b21wb25lbnQoKTsKKworICAgIGF1dG8gW2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFd
ID0gYzEudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKKyAgICBhdXRvIFtjMlJlZCwgYzJCbHVl
LCBjMkdyZWVuLCBjMkFscGhhXSA9IGMyLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisKICAg
ICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVkOwogICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVu
OwogICAgIGludCBkQiA9IGMxQmx1ZSAtIGMyQmx1ZTsKQEAgLTMwOSwxMCArMzA3LDggQEAgQ29s
b3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5VQogCiBDb2xvciBDb2xvcjo6Y29s
b3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkg
ewotICAgICAgICBhdXRvJiBleHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwotICAgICAgICBy
ZXR1cm4gQ29sb3IgeyBleHRlbmRlZENvbG9yLnJlZCgpLCBleHRlbmRlZENvbG9yLmdyZWVuKCks
IGV4dGVuZGVkQ29sb3IuYmx1ZSgpLCBhbHBoYSwgZXh0ZW5kZWRDb2xvci5jb2xvclNwYWNlKCkg
fTsKLSAgICB9CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5k
ZWQoKS5jb2xvcldpdGhBbHBoYShhbHBoYSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3aGVy
ZSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSBjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRp
dmVSb3VuZGluZy4KICAgICB1aW50OF90IG5ld0FscGhhID0gYWxwaGEgKiAweEZGOwpAQCAtMzI1
LDEwICszMjEsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAK
IENvbG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhmbG9h
dCBhbHBoYSkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIGF1dG8m
IGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IGV4
dGVuZGVkQ29sb3IucmVkKCksIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSwgZXh0ZW5kZWRDb2xvci5i
bHVlKCksIGFscGhhLCBleHRlbmRlZENvbG9yLmNvbG9yU3BhY2UoKSB9OwotICAgIH0KKyAgICBp
ZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNvbG9yV2l0aEFs
cGhhKGFscGhhKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24g
ZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmcuCiAgICAgdWludDhfdCBuZXdBbHBoYSA9
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywy
MSArMzM3LDE1IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRTaW1wbGVDb2xvcihTaW1wbGUKIAog
aW5saW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBjb25zdCBFeHRlbmRlZENvbG9y
JiBleHRlbmRlZENvbG9yID0gY29sb3IuYXNFeHRlbmRlZCgpOwotICAgICAgICByZXR1cm4gIWV4
dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRD
b2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7Ci0gICAgfQotCisgICAg
aWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQo
KS5pc0JsYWNrKCk7CiAgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6
YmxhY2s7CiB9CiAKIGlubGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIGlmIChjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgY29uc3Qg
RXh0ZW5kZWRDb2xvciYgZXh0ZW5kZWRDb2xvciA9IGNvbG9yLmFzRXh0ZW5kZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGV4dGVuZGVkQ29sb3IucmVkKCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmdyZWVu
KCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmJsdWUoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYWxw
aGEoKSA9PSAxOwotICAgIH0KLSAgICAKKyAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQorICAg
ICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hpdGUoKTsKICAgICByZXR1cm4gY29s
b3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsKIH0KIApAQCAtMzYwLDExICszNTQs
MTQgQEAgdm9pZCBDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogewogICAgIGlm
IChpc0V4dGVuZGVkKCkpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgICAgICBlbmNv
ZGVyIDw8IGFzRXh0ZW5kZWQoKS5yZWQoKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVk
KCkuZ3JlZW4oKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVkKCkuYmx1ZSgpOwotICAg
ICAgICBlbmNvZGVyIDw8IGFzRXh0ZW5kZWQoKS5hbHBoYSgpOwotICAgICAgICBlbmNvZGVyIDw8
IGFzRXh0ZW5kZWQoKS5jb2xvclNwYWNlKCk7CisKKyAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xv
ciA9IGFzRXh0ZW5kZWQoKTsKKyAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0
ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBlbmNvZGVyIDw8IGMxOworICAgICAgICBl
bmNvZGVyIDw8IGMyOworICAgICAgICBlbmNvZGVyIDw8IGMzOworICAgICAgICBlbmNvZGVyIDw8
IGFscGhhOworICAgICAgICBlbmNvZGVyIDw8IGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODksMjIgKzM4NiwyMiBAQCBPcHRpb25hbDxD
b2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICBpZiAoaXNFeHRlbmRlZCkgewotICAgICAgICBmbG9hdCByZWQ7Ci0gICAgICAg
IGZsb2F0IGdyZWVuOwotICAgICAgICBmbG9hdCBibHVlOworICAgICAgICBmbG9hdCBjMTsKKyAg
ICAgICAgZmxvYXQgYzI7CisgICAgICAgIGZsb2F0IGMzOwogICAgICAgICBmbG9hdCBhbHBoYTsK
ICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlZCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzEpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShncmVlbikp
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzIpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibHVlKSkKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjMykpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gQ29sb3Ig
eyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwgY29sb3JTcGFjZSB9OworICAgICAgICByZXR1cm4g
Q29sb3IgeyBjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSB9OwogICAgIH0KIAogICAgIGJv
b2wgaXNWYWxpZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
ZGVkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuZGVkQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIxMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksOCBAQCBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlCiAK
IHVuc2lnbmVkIEV4dGVuZGVkQ29sb3I6Omhhc2goKSBjb25zdAogewotICAgIHJldHVybiBjb21w
dXRlSGFzaChtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF0sIG1fY2hhbm5lbHMuY29tcG9uZW50c1sx
XSwgbV9jaGFubmVscy5jb21wb25lbnRzWzJdLCBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM10sIG1f
Y29sb3JTcGFjZSk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsK
KyAgICByZXR1cm4gY29tcHV0ZUhhc2goYzEsIGMyLCBjMywgYWxwaGEsIG1fY29sb3JTcGFjZSk7
CiB9CiAKIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKQEAgLTU3LDE2ICs1
OCwzNiBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBXVEY6OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCisgICAgYXV0byBbYzEsIGMyLCBjMywg
ZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworCiAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFs
bHlFcXVhbChhbHBoYSgpLCAxLjBmKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9y
KCIsIGNvbG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICcp
Jyk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJjb2xvcigiLCBjb2xvclNwYWNlLCAnICcs
IGMxLCAnICcsIGMyLCAnICcsIGMzLCAnKScpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNv
bG9yKCIsIGNvbG9yU3BhY2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICIgLyAiLCBleGlz
dGluZ0FscGhhLCAnKScpOworfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNv
bG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICIgLyAiLCBh
bHBoYSgpLCAnKScpOworUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IG92ZXJyaWRlQWxwaGEpIGNvbnN0Cit7CisgICAgYXV0byBbYzEsIGMyLCBj
MywgZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9y
OjpjcmVhdGUoYzEsIGMyLCBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgpKTsKIH0KIAot
UmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEo
ZmxvYXQgYWxwaGEpIGNvbnN0CitSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6aW52
ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewogICAgIGF1
dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKLSAgICByZXR1cm4g
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKDEuMGYgLSBjMSwgMS4wZiAtIGMyLCAxLjBmIC0gYzMsIGFs
cGhhLCBjb2xvclNwYWNlKCkpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoMS4w
ZiAtIGMxLCAxLjBmIC0gYzIsIDEuMGYgLSBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgp
KTsKK30KKworYm9vbCBFeHRlbmRlZENvbG9yOjppc1doaXRlKCkgY29uc3QKK3sKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBjMSA9PSAxICYm
IGMyID09IDEgJiYgYzMgPT0gMSAmJiBhbHBoYSA9PSAxOworfQorCitib29sIEV4dGVuZGVkQ29s
b3I6OmlzQmxhY2soKSBjb25zdAoreworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNo
YW5uZWxzKCk7CisgICAgcmV0dXJuICFjMSAmJiAhYzIgJiYgIWMzICYmIGFscGhhID09IDE7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0KICNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMzgsMzMgKzM3LDIxIEBAIGNsYXNzIEV4dGVuZGVkQ29sb3IgOiBwdWJs
aWMgUmVmQ291bnRlZDwKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNy
ZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0IpOwogCi0gICAgZmxvYXQgcmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF07Ci0gICAgfQotCi0gICAgZmxvYXQgZ3JlZW4o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1sxXTsK
LSAgICB9Ci0KLSAgICBmbG9hdCBibHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2NoYW5uZWxzLmNvbXBvbmVudHNbMl07Ci0gICAgfQotCiAgICAgZmxvYXQgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM107IH0KIAogICAgIGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9Ci0KICAg
ICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBSZWY8RXh0ZW5kZWRDb2xv
cj4gY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0OwogICAgIFJlZjxFeHRlbmRlZENvbG9yPiBp
bnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0KSBjb25zdDsKIAorICAgIGJvb2wgaXNXaGl0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNCbGFjaygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEV4dGVu
ZGVkQ29sb3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKICAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhh
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400245</attachid>
            <date>2020-05-26 07:59:58 -0700</date>
            <delta_ts>2020-05-26 08:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212366-20200526075958.patch</filename>
            <type>text/plain</type>
            <size>16264</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTI1ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBSZW1vdmUgcmVkKCkvZ3JlZW4oKS9ibHVlKCkgYWNjZXNzb3JzIGZyb20gRXh0ZW5kZWRDb2xv
ciBpbiBwcmVwZXJhdGlvbiBmb3Igc3VwcG9ydGluZyBub24tUkdCIGJhc2VkIENvbG9yU3BhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzNjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVh
cmVkKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIHRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkg
cmF0aGVyIHRoYW4gcG9raW5nIGF0IHRoZSBFeHRlbmRlZENvbG9yCisgICAgICAgIGNvbXBvbmVu
dHMgZGlyZWN0bHkuIFRoZSBvbGQgY29kZSB3YXMgYWxyZWFkeSBpbmNvcnJlY3QgaWYgdGhlIHR3
byBjb2xvcnMgaGFkIAorICAgICAgICBkaWZmZXJpbmcgY29sb3Igc3BhY2VzIHNvIHRoaXMgYXQg
bGVhc3Qgbm93IGdpdmVzIHJlYXNvbmFibGUgcmVzdWx0cy4KKworICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpj
b2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyBjb25zdCk6CisgICAgICAgIERl
bGVnYXRlIHRvIEV4dGVuZGVkQ29sb3IgY29tcGxldGVseSBmb3IgY29sb3JXaXRoQWxwaGEoKSB0
byBhbGxvdyBmb3IgbW9yZQorICAgICAgICBjb250cm9sIG92ZXIgaG93IHRoZSBjb21wb25lbnRz
IG1pZ2h0IGJlIHN0b3JlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzQmxhY2tD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNXaGl0ZUNvbG9yKToKKyAgICAgICAg
RGVsZWdhdGUgdG8gRXh0ZW5kZWRDb2xvciBmb3IgaXNCbGFjaygpL2lzV2hpdGUoKSB0byBhbGxv
dyBwZXItY29sb3Igc3BhY2UKKyAgICAgICAgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBwcmVkaWNh
dGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmRlY29kZSk6CisgICAgICAgIFVzZSBjMSwgYzIsIGMzIHJhdGhlciB0
aGFuIHJlZC9ncmVlbi9ibHVlLiBUaGlzIHNob3VsZCBiZSBhY2NlcHRhYmxlIGZvciB0aGUKKyAg
ICAgICAgZm9yc2VlYWJsZSBmdXR1cmUsIGFzIGFsbCBleHBlY3RlZCBjb2xvcnNwYWNlcyBvbmx5
IGhhdmUgMyBjaGFubmVscywgYnV0IGF0IAorICAgICAgICBzb21lIHBvaW50LCBpdCBtYXkgbWFr
ZSBzZW5zZSB0byBkZWxlZ2F0ZSBjb2RpbmcgdG8gRXh0ZW5kZWRDb2xvciBjb21wbGV0ZWx5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
ZWRDb2xvcjo6cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmdyZWVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmJsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzV2hpdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzQmxhY2sgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgVXNlIGNoYW5uZWxz
KCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzIHJhdGhlciB0aGFuIHRoZSByZWQoKS9ncmVlbigp
L2JsdWUoKSBhY2Nlc3NvcnMKKyAgICAgICAgZXZlcnl3aGVyZS4KKwogMjAyMC0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYW4gT3B0
aW9uYWw8PiBmb3IgTGF5ZXJGcmFnbWVudDo6Ym91bmRpbmdCb3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTYgKzQxLDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRX
aGkKIAogaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBjMSwgY29uc3QgQ29sb3Im
IGMyKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIGNvbG9ycyBh
cmUgaW4gdGhlIHNhbWUgY29sb3JzcGFjZS4KKyAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAt
IG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0IG1hbnkgb2YgdGhl
IGNhbGwKICAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBjb21wYXJpc29uIHZhbHVlcyBiYXNlZCBv
biBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0CiAgICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJs
ZXMgdG8gY2hhbmdlIHRoZW0gOikKLSAgICBpbnQgYzFSZWQgPSBjMS5pc0V4dGVuZGVkKCkgPyBj
MS5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMS5hc1NpbXBsZUNvbG9yKCkucmVkQ29tcG9u
ZW50KCk7Ci0gICAgaW50IGMxR3JlZW4gPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSAqIDI1NSA6IGMxLmFzU2ltcGxlQ29sb3IoKS5ncmVlbkNvbXBvbmVudCgpOwot
ICAgIGludCBjMUJsdWUgPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVkKCkuYmx1ZSgp
ICogMjU1IDogYzEuYXNTaW1wbGVDb2xvcigpLmJsdWVDb21wb25lbnQoKTsKLSAgICBpbnQgYzJS
ZWQgPSBjMi5pc0V4dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMi5h
c1NpbXBsZUNvbG9yKCkucmVkQ29tcG9uZW50KCk7Ci0gICAgaW50IGMyR3JlZW4gPSBjMi5pc0V4
dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSAqIDI1NSA6IGMyLmFzU2ltcGxlQ29s
b3IoKS5ncmVlbkNvbXBvbmVudCgpOwotICAgIGludCBjMkJsdWUgPSBjMi5pc0V4dGVuZGVkKCkg
PyBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpICogMjU1IDogYzIuYXNTaW1wbGVDb2xvcigpLmJsdWVD
b21wb25lbnQoKTsKKworICAgIGF1dG8gW2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFd
ID0gYzEudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKKyAgICBhdXRvIFtjMlJlZCwgYzJCbHVl
LCBjMkdyZWVuLCBjMkFscGhhXSA9IGMyLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisKICAg
ICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVkOwogICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVu
OwogICAgIGludCBkQiA9IGMxQmx1ZSAtIGMyQmx1ZTsKQEAgLTMwOSwxMCArMzA3LDggQEAgQ29s
b3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5VQogCiBDb2xvciBDb2xvcjo6Y29s
b3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkg
ewotICAgICAgICBhdXRvJiBleHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwotICAgICAgICBy
ZXR1cm4gQ29sb3IgeyBleHRlbmRlZENvbG9yLnJlZCgpLCBleHRlbmRlZENvbG9yLmdyZWVuKCks
IGV4dGVuZGVkQ29sb3IuYmx1ZSgpLCBhbHBoYSwgZXh0ZW5kZWRDb2xvci5jb2xvclNwYWNlKCkg
fTsKLSAgICB9CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5k
ZWQoKS5jb2xvcldpdGhBbHBoYShhbHBoYSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3aGVy
ZSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSBjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRp
dmVSb3VuZGluZy4KICAgICB1aW50OF90IG5ld0FscGhhID0gYWxwaGEgKiAweEZGOwpAQCAtMzI1
LDEwICszMjEsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAK
IENvbG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhmbG9h
dCBhbHBoYSkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIGF1dG8m
IGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IGV4
dGVuZGVkQ29sb3IucmVkKCksIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSwgZXh0ZW5kZWRDb2xvci5i
bHVlKCksIGFscGhhLCBleHRlbmRlZENvbG9yLmNvbG9yU3BhY2UoKSB9OwotICAgIH0KKyAgICBp
ZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNvbG9yV2l0aEFs
cGhhKGFscGhhKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24g
ZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmcuCiAgICAgdWludDhfdCBuZXdBbHBoYSA9
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywy
MSArMzM3LDE1IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRTaW1wbGVDb2xvcihTaW1wbGUKIAog
aW5saW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBjb25zdCBFeHRlbmRlZENvbG9y
JiBleHRlbmRlZENvbG9yID0gY29sb3IuYXNFeHRlbmRlZCgpOwotICAgICAgICByZXR1cm4gIWV4
dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRD
b2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7Ci0gICAgfQotCisgICAg
aWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQo
KS5pc0JsYWNrKCk7CiAgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6
YmxhY2s7CiB9CiAKIGlubGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIGlmIChjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgY29uc3Qg
RXh0ZW5kZWRDb2xvciYgZXh0ZW5kZWRDb2xvciA9IGNvbG9yLmFzRXh0ZW5kZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGV4dGVuZGVkQ29sb3IucmVkKCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmdyZWVu
KCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmJsdWUoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYWxw
aGEoKSA9PSAxOwotICAgIH0KLSAgICAKKyAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQorICAg
ICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hpdGUoKTsKICAgICByZXR1cm4gY29s
b3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsKIH0KIApAQCAtMzYwLDExICszNTQs
MTQgQEAgdm9pZCBDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogewogICAgIGlm
IChpc0V4dGVuZGVkKCkpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgICAgICBlbmNv
ZGVyIDw8IGFzRXh0ZW5kZWQoKS5yZWQoKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVk
KCkuZ3JlZW4oKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVkKCkuYmx1ZSgpOwotICAg
ICAgICBlbmNvZGVyIDw8IGFzRXh0ZW5kZWQoKS5hbHBoYSgpOwotICAgICAgICBlbmNvZGVyIDw8
IGFzRXh0ZW5kZWQoKS5jb2xvclNwYWNlKCk7CisKKyAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xv
ciA9IGFzRXh0ZW5kZWQoKTsKKyAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0
ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBlbmNvZGVyIDw8IGMxOworICAgICAgICBl
bmNvZGVyIDw8IGMyOworICAgICAgICBlbmNvZGVyIDw8IGMzOworICAgICAgICBlbmNvZGVyIDw8
IGFscGhhOworICAgICAgICBlbmNvZGVyIDw8IGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODksMjIgKzM4NiwyMiBAQCBPcHRpb25hbDxD
b2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICBpZiAoaXNFeHRlbmRlZCkgewotICAgICAgICBmbG9hdCByZWQ7Ci0gICAgICAg
IGZsb2F0IGdyZWVuOwotICAgICAgICBmbG9hdCBibHVlOworICAgICAgICBmbG9hdCBjMTsKKyAg
ICAgICAgZmxvYXQgYzI7CisgICAgICAgIGZsb2F0IGMzOwogICAgICAgICBmbG9hdCBhbHBoYTsK
ICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlZCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzEpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShncmVlbikp
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzIpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibHVlKSkKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjMykpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gQ29sb3Ig
eyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwgY29sb3JTcGFjZSB9OworICAgICAgICByZXR1cm4g
Q29sb3IgeyBjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSB9OwogICAgIH0KIAogICAgIGJv
b2wgaXNWYWxpZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
ZGVkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuZGVkQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIxMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksOCBAQCBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlCiAK
IHVuc2lnbmVkIEV4dGVuZGVkQ29sb3I6Omhhc2goKSBjb25zdAogewotICAgIHJldHVybiBjb21w
dXRlSGFzaChtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF0sIG1fY2hhbm5lbHMuY29tcG9uZW50c1sx
XSwgbV9jaGFubmVscy5jb21wb25lbnRzWzJdLCBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM10sIG1f
Y29sb3JTcGFjZSk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsK
KyAgICByZXR1cm4gY29tcHV0ZUhhc2goYzEsIGMyLCBjMywgYWxwaGEsIG1fY29sb3JTcGFjZSk7
CiB9CiAKIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKQEAgLTU3LDE2ICs1
OCwzNiBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBXVEY6OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCisgICAgYXV0byBbYzEsIGMyLCBjMywg
ZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworCiAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFs
bHlFcXVhbChhbHBoYSgpLCAxLjBmKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9y
KCIsIGNvbG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICcp
Jyk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJjb2xvcigiLCBjb2xvclNwYWNlLCAnICcs
IGMxLCAnICcsIGMyLCAnICcsIGMzLCAnKScpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNv
bG9yKCIsIGNvbG9yU3BhY2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICIgLyAiLCBleGlz
dGluZ0FscGhhLCAnKScpOworfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNv
bG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICIgLyAiLCBh
bHBoYSgpLCAnKScpOworUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IG92ZXJyaWRlQWxwaGEpIGNvbnN0Cit7CisgICAgYXV0byBbYzEsIGMyLCBj
MywgZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9y
OjpjcmVhdGUoYzEsIGMyLCBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgpKTsKIH0KIAot
UmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEo
ZmxvYXQgYWxwaGEpIGNvbnN0CitSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6aW52
ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewogICAgIGF1
dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKLSAgICByZXR1cm4g
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKDEuMGYgLSBjMSwgMS4wZiAtIGMyLCAxLjBmIC0gYzMsIGFs
cGhhLCBjb2xvclNwYWNlKCkpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoMS4w
ZiAtIGMxLCAxLjBmIC0gYzIsIDEuMGYgLSBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgp
KTsKK30KKworYm9vbCBFeHRlbmRlZENvbG9yOjppc1doaXRlKCkgY29uc3QKK3sKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBjMSA9PSAxICYm
IGMyID09IDEgJiYgYzMgPT0gMSAmJiBhbHBoYSA9PSAxOworfQorCitib29sIEV4dGVuZGVkQ29s
b3I6OmlzQmxhY2soKSBjb25zdAoreworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNo
YW5uZWxzKCk7CisgICAgcmV0dXJuICFjMSAmJiAhYzIgJiYgIWMzICYmIGFscGhhID09IDE7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0KICNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMzgsMzMgKzM3LDIxIEBAIGNsYXNzIEV4dGVuZGVkQ29sb3IgOiBwdWJs
aWMgUmVmQ291bnRlZDwKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNy
ZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0IpOwogCi0gICAgZmxvYXQgcmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF07Ci0gICAgfQotCi0gICAgZmxvYXQgZ3JlZW4o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1sxXTsK
LSAgICB9Ci0KLSAgICBmbG9hdCBibHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2NoYW5uZWxzLmNvbXBvbmVudHNbMl07Ci0gICAgfQotCiAgICAgZmxvYXQgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM107IH0KIAogICAgIGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9Ci0KICAg
ICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBSZWY8RXh0ZW5kZWRDb2xv
cj4gY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0OwogICAgIFJlZjxFeHRlbmRlZENvbG9yPiBp
bnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0KSBjb25zdDsKIAorICAgIGJvb2wgaXNXaGl0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNCbGFjaygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEV4dGVu
ZGVkQ29sb3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKICAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhh
KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYyMTQyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjAtMDUtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIEV4dGVuZGVkIENvbG9yIENsZWFudXA6IFJlbW92ZSByZWQoKS9ncmVlbigpL2Js
dWUoKSBhY2Nlc3NvcnMgZnJvbSBFeHRlbmRlZENvbG9yIGluIHByZXBlcmF0aW9uIGZvciBzdXBw
b3J0aW5nIG5vbi1SR0IgYmFzZWQgQ29sb3JTcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjM2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4
dGVuZGVkQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgVXBkYXRlIHRlc3RzIHRvIHB1bGwgdmFsdWVzIGZyb20gdGhlIGNoYW5uZWxzIHJhdGhl
ciB0aGFuIGZyb20gdGhlIHJlZCgpL2dyZWVuKCkvYmx1ZSgpIGFjY2Vzc29ycy4KKwogMjAyMC0w
NS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBBY3Rpb25TaGVldFRlc3RzLkRhdGFEZXRlY3RvcnNMaW5rSXNOb3RQcmVzZW50ZWRBc0FM
aW5rIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkocmV2aXNp
b24gMjYyMTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVk
Q29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMyBAQCBURVNUKEV4
dGVuZGVkQ29sb3IsIENvbnN0cnVjdG9yKQogewogICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1
LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7CiAgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRl
bmRlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMS5hc0V4dGVuZGVkKCkucmVkKCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMxLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzEuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworCisgICAgYXV0byBb
ciwgZywgYiwgYWxwaGFdID0gYzEuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMS4wLCByKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBnKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMC4yNSwgYik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYWxwaGEp
OwogICAgIEVYUEVDVF9FUSgxdSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOwogICAgIEVY
UEVDVF9FUShjMS5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7CiB9
CkBAIC01MywxMCArNTYsMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBDb3B5Q29uc3RydWN0b3Ip
CiAKICAgICBDb2xvciBjMihjMSk7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4
dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQo
KS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJs
dWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkp
OworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAu
NSwgZyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9F
USgxLjAsIGFscGhhKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3Vu
dCgpKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAg
ICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIp
OwpAQCAtNjksMTAgKzc0LDEyIEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQXNzaWdubWVudCkKIAog
ICAgIENvbG9yIGMyID0gYzE7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVu
ZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5n
cmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUo
KSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOwor
ICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwg
Zyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9FUSgx
LjAsIGFscGhhKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgp
KTsKICAgICBFWFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAgICBF
WFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOwpA
QCAtMTUyLDEwICsxNTksMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBNb3ZlQ29uc3RydWN0b3Ip
CiAgICAgRVhQRUNUX0ZBTFNFKGMxLmlzRXh0ZW5kZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGMx
LmlzVmFsaWQoKSk7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCku
cmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworICAgIGF1
dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgZyk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGFs
cGhhKTsKICAgICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAg
ICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIp
OwogfQpAQCAtMTcyLDEwICsxODEsMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBNb3ZlQXNzaWdu
bWVudCkKICAgICBFWFBFQ1RfRkFMU0UoYzEuaXNFeHRlbmRlZCgpKTsKICAgICBFWFBFQ1RfRkFM
U0UoYzEuaXNWYWxpZCgpKTsKIAotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5k
ZWQoKS5yZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzIuYXNFeHRlbmRlZCgpLmdy
ZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkuYWxwaGEoKSk7Cisg
ICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCByKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBn
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEu
MCwgYSk7CiAgICAgRVhQRUNUX0VRKDF1LCBjMi5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7CiAg
ICAgRVhQRUNUX0VRKGMyLmNzc1RleHQoKSwgImNvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4yNSki
KTsKIH0KQEAgLTE4OCwxMCArMTk5LDEyIEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQmFzaWNSZWZl
cmVuY2VDb3VudGkKICAgICBDb2xvciogYzIgPSBuZXcgQ29sb3IoKmMxKTsKICAgICBDb2xvciog
YzMgPSBuZXcgQ29sb3IoKmMyKTsKIAotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLT5hc0V4
dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLT5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGMyLT5hc0V4dGVuZGVkKCku
Ymx1ZSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi0+YXNFeHRlbmRlZCgpLmFscGhh
KCkpOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLT5hc0V4dGVuZGVkKCkuY2hhbm5l
bHMoKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHIpOworICAgIEVYUEVDVF9GTE9BVF9F
USgwLjUsIGcpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBiKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMS4wLCBhbHBoYSk7CiAgICAgRVhQRUNUX0VRKDN1LCBjMi0+YXNFeHRlbmRlZCgpLnJl
ZkNvdW50KCkpOwogICAgIEVYUEVDVF9FUShjMi0+Y3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1w
MyAxIDAuNSAwLjI1KSIpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400250</attachid>
            <date>2020-05-26 08:31:47 -0700</date>
            <delta_ts>2020-05-26 10:56:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212366-20200526083146.patch</filename>
            <type>text/plain</type>
            <size>16268</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTI1ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBSZW1vdmUgcmVkKCkvZ3JlZW4oKS9ibHVlKCkgYWNjZXNzb3JzIGZyb20gRXh0ZW5kZWRDb2xv
ciBpbiBwcmVwZXJhdGlvbiBmb3Igc3VwcG9ydGluZyBub24tUkdCIGJhc2VkIENvbG9yU3BhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzNjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVh
cmVkKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIHRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkg
cmF0aGVyIHRoYW4gcG9raW5nIGF0IHRoZSBFeHRlbmRlZENvbG9yCisgICAgICAgIGNvbXBvbmVu
dHMgZGlyZWN0bHkuIFRoZSBvbGQgY29kZSB3YXMgYWxyZWFkeSBpbmNvcnJlY3QgaWYgdGhlIHR3
byBjb2xvcnMgaGFkIAorICAgICAgICBkaWZmZXJpbmcgY29sb3Igc3BhY2VzIHNvIHRoaXMgYXQg
bGVhc3Qgbm93IGdpdmVzIHJlYXNvbmFibGUgcmVzdWx0cy4KKworICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpj
b2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyBjb25zdCk6CisgICAgICAgIERl
bGVnYXRlIHRvIEV4dGVuZGVkQ29sb3IgY29tcGxldGVseSBmb3IgY29sb3JXaXRoQWxwaGEoKSB0
byBhbGxvdyBmb3IgbW9yZQorICAgICAgICBjb250cm9sIG92ZXIgaG93IHRoZSBjb21wb25lbnRz
IG1pZ2h0IGJlIHN0b3JlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzQmxhY2tD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6aXNXaGl0ZUNvbG9yKToKKyAgICAgICAg
RGVsZWdhdGUgdG8gRXh0ZW5kZWRDb2xvciBmb3IgaXNCbGFjaygpL2lzV2hpdGUoKSB0byBhbGxv
dyBwZXItY29sb3Igc3BhY2UKKyAgICAgICAgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBwcmVkaWNh
dGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmRlY29kZSk6CisgICAgICAgIFVzZSBjMSwgYzIsIGMzIHJhdGhlciB0
aGFuIHJlZC9ncmVlbi9ibHVlLiBUaGlzIHNob3VsZCBiZSBhY2NlcHRhYmxlIGZvciB0aGUKKyAg
ICAgICAgZm9yc2VlYWJsZSBmdXR1cmUsIGFzIGFsbCBleHBlY3RlZCBjb2xvcnNwYWNlcyBvbmx5
IGhhdmUgMyBjaGFubmVscywgYnV0IGF0IAorICAgICAgICBzb21lIHBvaW50LCBpdCBtYXkgbWFr
ZSBzZW5zZSB0byBkZWxlZ2F0ZSBjb2RpbmcgdG8gRXh0ZW5kZWRDb2xvciBjb21wbGV0ZWx5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5kZWRDb2xvcjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5k
ZWRDb2xvcjo6cmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmdyZWVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGVk
Q29sb3I6OmJsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRD
b2xvcjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzV2hpdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuZGVkQ29sb3I6OmlzQmxhY2sgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgVXNlIGNoYW5uZWxz
KCkgd2l0aCBzdHJ1Y3R1cmVkIGJpbmRpbmdzIHJhdGhlciB0aGFuIHRoZSByZWQoKS9ncmVlbigp
L2JsdWUoKSBhY2Nlc3NvcnMKKyAgICAgICAgZXZlcnl3aGVyZS4KKwogMjAyMC0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYW4gT3B0
aW9uYWw8PiBmb3IgTGF5ZXJGcmFnbWVudDo6Ym91bmRpbmdCb3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTYgKzQxLDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRX
aGkKIAogaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBjMSwgY29uc3QgQ29sb3Im
IGMyKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIGNvbG9ycyBh
cmUgaW4gdGhlIHNhbWUgY29sb3JzcGFjZS4KKyAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAt
IG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0IG1hbnkgb2YgdGhl
IGNhbGwKICAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBjb21wYXJpc29uIHZhbHVlcyBiYXNlZCBv
biBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0CiAgICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJs
ZXMgdG8gY2hhbmdlIHRoZW0gOikKLSAgICBpbnQgYzFSZWQgPSBjMS5pc0V4dGVuZGVkKCkgPyBj
MS5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMS5hc1NpbXBsZUNvbG9yKCkucmVkQ29tcG9u
ZW50KCk7Ci0gICAgaW50IGMxR3JlZW4gPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSAqIDI1NSA6IGMxLmFzU2ltcGxlQ29sb3IoKS5ncmVlbkNvbXBvbmVudCgpOwot
ICAgIGludCBjMUJsdWUgPSBjMS5pc0V4dGVuZGVkKCkgPyBjMS5hc0V4dGVuZGVkKCkuYmx1ZSgp
ICogMjU1IDogYzEuYXNTaW1wbGVDb2xvcigpLmJsdWVDb21wb25lbnQoKTsKLSAgICBpbnQgYzJS
ZWQgPSBjMi5pc0V4dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUgOiBjMi5h
c1NpbXBsZUNvbG9yKCkucmVkQ29tcG9uZW50KCk7Ci0gICAgaW50IGMyR3JlZW4gPSBjMi5pc0V4
dGVuZGVkKCkgPyBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSAqIDI1NSA6IGMyLmFzU2ltcGxlQ29s
b3IoKS5ncmVlbkNvbXBvbmVudCgpOwotICAgIGludCBjMkJsdWUgPSBjMi5pc0V4dGVuZGVkKCkg
PyBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpICogMjU1IDogYzIuYXNTaW1wbGVDb2xvcigpLmJsdWVD
b21wb25lbnQoKTsKKworICAgIGF1dG8gW2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFd
ID0gYzEudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKKyAgICBhdXRvIFtjMlJlZCwgYzJCbHVl
LCBjMkdyZWVuLCBjMkFscGhhXSA9IGMyLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisKICAg
ICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVkOwogICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVu
OwogICAgIGludCBkQiA9IGMxQmx1ZSAtIGMyQmx1ZTsKQEAgLTMwOSwxMCArMzA3LDggQEAgQ29s
b3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5VQogCiBDb2xvciBDb2xvcjo6Y29s
b3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkg
ewotICAgICAgICBhdXRvJiBleHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOwotICAgICAgICBy
ZXR1cm4gQ29sb3IgeyBleHRlbmRlZENvbG9yLnJlZCgpLCBleHRlbmRlZENvbG9yLmdyZWVuKCks
IGV4dGVuZGVkQ29sb3IuYmx1ZSgpLCBhbHBoYSwgZXh0ZW5kZWRDb2xvci5jb2xvclNwYWNlKCkg
fTsKLSAgICB9CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5k
ZWQoKS5jb2xvcldpdGhBbHBoYShhbHBoYSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3aGVy
ZSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbSBjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRp
dmVSb3VuZGluZy4KICAgICB1aW50OF90IG5ld0FscGhhID0gYWxwaGEgKiAweEZGOwpAQCAtMzI1
LDEwICszMjEsOCBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAK
IENvbG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYVVzaW5nQWx0ZXJuYXRpdmVSb3VuZGluZyhmbG9h
dCBhbHBoYSkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIGF1dG8m
IGV4dGVuZGVkQ29sb3IgPSBhc0V4dGVuZGVkKCk7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IGV4
dGVuZGVkQ29sb3IucmVkKCksIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSwgZXh0ZW5kZWRDb2xvci5i
bHVlKCksIGFscGhhLCBleHRlbmRlZENvbG9yLmNvbG9yU3BhY2UoKSB9OwotICAgIH0KKyAgICBp
ZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNvbG9yV2l0aEFs
cGhhKGFscGhhKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoaXMgZnVuY3Rpb24g
ZGlmZmVycyBmcm9tIGNvbG9yV2l0aEFscGhhVXNpbmcuCiAgICAgdWludDhfdCBuZXdBbHBoYSA9
IGNvbG9yRmxvYXRUb1NpbXBsZUNvbG9yQnl0ZShhbHBoYSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywy
MSArMzM3LDE1IEBAIGlubGluZSB2b2lkIENvbG9yOjpzZXRTaW1wbGVDb2xvcihTaW1wbGUKIAog
aW5saW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkgewotICAgICAgICBjb25zdCBFeHRlbmRlZENvbG9y
JiBleHRlbmRlZENvbG9yID0gY29sb3IuYXNFeHRlbmRlZCgpOwotICAgICAgICByZXR1cm4gIWV4
dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRD
b2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7Ci0gICAgfQotCisgICAg
aWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbG9yLmFzRXh0ZW5kZWQo
KS5pc0JsYWNrKCk7CiAgICAgcmV0dXJuIGNvbG9yLmFzU2ltcGxlQ29sb3IoKSA9PSBDb2xvcjo6
YmxhY2s7CiB9CiAKIGlubGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIGlmIChjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgY29uc3Qg
RXh0ZW5kZWRDb2xvciYgZXh0ZW5kZWRDb2xvciA9IGNvbG9yLmFzRXh0ZW5kZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGV4dGVuZGVkQ29sb3IucmVkKCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmdyZWVu
KCkgPT0gMSAmJiBleHRlbmRlZENvbG9yLmJsdWUoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYWxw
aGEoKSA9PSAxOwotICAgIH0KLSAgICAKKyAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQorICAg
ICAgICByZXR1cm4gY29sb3IuYXNFeHRlbmRlZCgpLmlzV2hpdGUoKTsKICAgICByZXR1cm4gY29s
b3IuYXNTaW1wbGVDb2xvcigpID09IENvbG9yOjp3aGl0ZTsKIH0KIApAQCAtMzYwLDExICszNTQs
MTQgQEAgdm9pZCBDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogewogICAgIGlm
IChpc0V4dGVuZGVkKCkpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgICAgICBlbmNv
ZGVyIDw8IGFzRXh0ZW5kZWQoKS5yZWQoKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVk
KCkuZ3JlZW4oKTsKLSAgICAgICAgZW5jb2RlciA8PCBhc0V4dGVuZGVkKCkuYmx1ZSgpOwotICAg
ICAgICBlbmNvZGVyIDw8IGFzRXh0ZW5kZWQoKS5hbHBoYSgpOwotICAgICAgICBlbmNvZGVyIDw8
IGFzRXh0ZW5kZWQoKS5jb2xvclNwYWNlKCk7CisKKyAgICAgICAgYXV0byYgZXh0ZW5kZWRDb2xv
ciA9IGFzRXh0ZW5kZWQoKTsKKyAgICAgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gZXh0
ZW5kZWRDb2xvci5jaGFubmVscygpOworICAgICAgICBlbmNvZGVyIDw8IGMxOworICAgICAgICBl
bmNvZGVyIDw8IGMyOworICAgICAgICBlbmNvZGVyIDw8IGMzOworICAgICAgICBlbmNvZGVyIDw8
IGFscGhhOworICAgICAgICBlbmNvZGVyIDw8IGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODksMjIgKzM4NiwyMiBAQCBPcHRpb25hbDxD
b2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICBpZiAoaXNFeHRlbmRlZCkgewotICAgICAgICBmbG9hdCByZWQ7Ci0gICAgICAg
IGZsb2F0IGdyZWVuOwotICAgICAgICBmbG9hdCBibHVlOworICAgICAgICBmbG9hdCBjMTsKKyAg
ICAgICAgZmxvYXQgYzI7CisgICAgICAgIGZsb2F0IGMzOwogICAgICAgICBmbG9hdCBhbHBoYTsK
ICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlZCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzEpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShncmVlbikp
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYzIpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibHVlKSkKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjMykpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gQ29sb3Ig
eyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSwgY29sb3JTcGFjZSB9OworICAgICAgICByZXR1cm4g
Q29sb3IgeyBjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSB9OwogICAgIH0KIAogICAgIGJv
b2wgaXNWYWxpZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
ZGVkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuZGVkQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIxMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksOCBAQCBSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlCiAK
IHVuc2lnbmVkIEV4dGVuZGVkQ29sb3I6Omhhc2goKSBjb25zdAogewotICAgIHJldHVybiBjb21w
dXRlSGFzaChtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF0sIG1fY2hhbm5lbHMuY29tcG9uZW50c1sx
XSwgbV9jaGFubmVscy5jb21wb25lbnRzWzJdLCBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM10sIG1f
Y29sb3JTcGFjZSk7CisgICAgYXV0byBbYzEsIGMyLCBjMywgYWxwaGFdID0gY2hhbm5lbHMoKTsK
KyAgICByZXR1cm4gY29tcHV0ZUhhc2goYzEsIGMyLCBjMywgYWxwaGEsIG1fY29sb3JTcGFjZSk7
CiB9CiAKIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKQEAgLTU3LDE2ICs1
OCwzNiBAQCBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBXVEY6OmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCisgICAgYXV0byBbYzEsIGMyLCBjMywg
ZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworCiAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFs
bHlFcXVhbChhbHBoYSgpLCAxLjBmKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9y
KCIsIGNvbG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICcp
Jyk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJjb2xvcigiLCBjb2xvclNwYWNlLCAnICcs
IGMxLCAnICcsIGMyLCAnICcsIGMzLCAnKScpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNv
bG9yKCIsIGNvbG9yU3BhY2UsICcgJywgYzEsICcgJywgYzIsICcgJywgYzMsICIgLyAiLCBleGlz
dGluZ0FscGhhLCAnKScpOworfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNv
bG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICIgLyAiLCBh
bHBoYSgpLCAnKScpOworUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmNvbG9yV2l0
aEFscGhhKGZsb2F0IG92ZXJyaWRlQWxwaGEpIGNvbnN0Cit7CisgICAgYXV0byBbYzEsIGMyLCBj
MywgZXhpc3RpbmdBbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9y
OjpjcmVhdGUoYzEsIGMyLCBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgpKTsKIH0KIAot
UmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVuZGVkQ29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEo
ZmxvYXQgYWxwaGEpIGNvbnN0CitSZWY8RXh0ZW5kZWRDb2xvcj4gRXh0ZW5kZWRDb2xvcjo6aW52
ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBvdmVycmlkZUFscGhhKSBjb25zdAogewogICAgIGF1
dG8gW2MxLCBjMiwgYzMsIGV4aXN0aW5nQWxwaGFdID0gY2hhbm5lbHMoKTsKLSAgICByZXR1cm4g
RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKDEuMGYgLSBjMSwgMS4wZiAtIGMyLCAxLjBmIC0gYzMsIGFs
cGhhLCBjb2xvclNwYWNlKCkpOworICAgIHJldHVybiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoMS4w
ZiAtIGMxLCAxLjBmIC0gYzIsIDEuMGYgLSBjMywgb3ZlcnJpZGVBbHBoYSwgY29sb3JTcGFjZSgp
KTsKK30KKworYm9vbCBFeHRlbmRlZENvbG9yOjppc1doaXRlKCkgY29uc3QKK3sKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBhbHBoYV0gPSBjaGFubmVscygpOworICAgIHJldHVybiBjMSA9PSAxICYm
IGMyID09IDEgJiYgYzMgPT0gMSAmJiBhbHBoYSA9PSAxOworfQorCitib29sIEV4dGVuZGVkQ29s
b3I6OmlzQmxhY2soKSBjb25zdAoreworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGFscGhhXSA9IGNo
YW5uZWxzKCk7CisgICAgcmV0dXJuICFjMSAmJiAhYzIgJiYgIWMzICYmIGFscGhhID09IDE7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgJKHJldmlzaW9uIDI2MjEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0KICNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMzgsMzMgKzM3LDIxIEBAIGNsYXNzIEV4dGVuZGVkQ29sb3IgOiBwdWJs
aWMgUmVmQ291bnRlZDwKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNy
ZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0IpOwogCi0gICAgZmxvYXQgcmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF07Ci0gICAgfQotCi0gICAgZmxvYXQgZ3JlZW4o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1sxXTsK
LSAgICB9Ci0KLSAgICBmbG9hdCBibHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2NoYW5uZWxzLmNvbXBvbmVudHNbMl07Ci0gICAgfQotCiAgICAgZmxvYXQgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM107IH0KIAogICAgIGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9Ci0KICAg
ICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBSZWY8RXh0ZW5kZWRDb2xv
cj4gY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0OwogICAgIFJlZjxFeHRlbmRlZENvbG9yPiBp
bnZlcnRlZENvbG9yV2l0aEFscGhhKGZsb2F0KSBjb25zdDsKIAorICAgIGJvb2wgaXNXaGl0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNCbGFjaygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEV4dGVu
ZGVkQ29sb3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKICAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhh
KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYyMTQyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjAtMDUtMjYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIEV4dGVuZGVkIENvbG9yIENsZWFudXA6IFJlbW92ZSByZWQoKS9ncmVlbigpL2Js
dWUoKSBhY2Nlc3NvcnMgZnJvbSBFeHRlbmRlZENvbG9yIGluIHByZXBlcmF0aW9uIGZvciBzdXBw
b3J0aW5nIG5vbi1SR0IgYmFzZWQgQ29sb3JTcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjM2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4
dGVuZGVkQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgVXBkYXRlIHRlc3RzIHRvIHB1bGwgdmFsdWVzIGZyb20gdGhlIGNoYW5uZWxzIHJhdGhl
ciB0aGFuIGZyb20gdGhlIHJlZCgpL2dyZWVuKCkvYmx1ZSgpIGFjY2Vzc29ycy4KKwogMjAyMC0w
NS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBBY3Rpb25TaGVldFRlc3RzLkRhdGFEZXRlY3RvcnNMaW5rSXNOb3RQcmVzZW50ZWRBc0FM
aW5rIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkocmV2aXNp
b24gMjYyMTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVk
Q29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMyBAQCBURVNUKEV4
dGVuZGVkQ29sb3IsIENvbnN0cnVjdG9yKQogewogICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1
LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7CiAgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRl
bmRlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMS5hc0V4dGVuZGVkKCkucmVkKCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMxLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzEuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworCisgICAgYXV0byBb
ciwgZywgYiwgYWxwaGFdID0gYzEuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMS4wLCByKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBnKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMC4yNSwgYik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYWxwaGEp
OwogICAgIEVYUEVDVF9FUSgxdSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOwogICAgIEVY
UEVDVF9FUShjMS5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7CiB9
CkBAIC01MywxMCArNTYsMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBDb3B5Q29uc3RydWN0b3Ip
CiAKICAgICBDb2xvciBjMihjMSk7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4
dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQo
KS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJs
dWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkp
OworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAu
NSwgZyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9F
USgxLjAsIGFscGhhKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3Vu
dCgpKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAg
ICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIp
OwpAQCAtNjksMTAgKzc0LDEyIEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgQXNzaWdubWVudCkKIAog
ICAgIENvbG9yIGMyID0gYzE7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVu
ZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5n
cmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUo
KSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOwor
ICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwg
Zyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9FUSgx
LjAsIGFscGhhKTsKICAgICBFWFBFQ1RfRVEoMnUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgp
KTsKICAgICBFWFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAgICBF
WFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOwpA
QCAtMTUyLDEwICsxNTksMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBNb3ZlQ29uc3RydWN0b3Ip
CiAgICAgRVhQRUNUX0ZBTFNFKGMxLmlzRXh0ZW5kZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGMx
LmlzVmFsaWQoKSk7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCku
cmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworICAgIGF1
dG8gW3IsIGcsIGIsIGFscGhhXSA9IGMyLmFzRXh0ZW5kZWQoKS5jaGFubmVscygpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEuMCwgcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgZyk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGIpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGFs
cGhhKTsKICAgICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKICAg
ICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIp
OwogfQpAQCAtMTcyLDEwICsxODEsMTIgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBNb3ZlQXNzaWdu
bWVudCkKICAgICBFWFBFQ1RfRkFMU0UoYzEuaXNFeHRlbmRlZCgpKTsKICAgICBFWFBFQ1RfRkFM
U0UoYzEuaXNWYWxpZCgpKTsKIAotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5k
ZWQoKS5yZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzIuYXNFeHRlbmRlZCgpLmdy
ZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkuYWxwaGEoKSk7Cisg
ICAgYXV0byBbciwgZywgYiwgYWxwaGFdID0gYzIuYXNFeHRlbmRlZCgpLmNoYW5uZWxzKCk7CisK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCByKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBn
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEu
MCwgYWxwaGEpOwogICAgIEVYUEVDVF9FUSgxdSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkp
OwogICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAu
MjUpIik7CiB9CkBAIC0xODgsMTAgKzE5OSwxMiBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEJhc2lj
UmVmZXJlbmNlQ291bnRpCiAgICAgQ29sb3IqIGMyID0gbmV3IENvbG9yKCpjMSk7CiAgICAgQ29s
b3IqIGMzID0gbmV3IENvbG9yKCpjMik7CiAKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi0+
YXNFeHRlbmRlZCgpLnJlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBjMi0+YXNFeHRl
bmRlZCgpLmdyZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi0+YXNFeHRlbmRl
ZCgpLmJsdWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzItPmFzRXh0ZW5kZWQoKS5h
bHBoYSgpKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjMi0+YXNFeHRlbmRlZCgpLmNo
YW5uZWxzKCk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCByKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMC41LCBnKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYik7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDEuMCwgYWxwaGEpOwogICAgIEVYUEVDVF9FUSgzdSwgYzItPmFzRXh0ZW5kZWQo
KS5yZWZDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoYzItPmNzc1RleHQoKSwgImNvbG9yKGRpc3Bs
YXktcDMgMSAwLjUgMC4yNSkiKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>