<?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>214226</bug_id>
          
          <creation_ts>2020-07-11 20:20:54 -0700</creation_ts>
          <short_desc>Tidy up color usage in accessibility code</short_desc>
          <delta_ts>2020-07-12 12:47: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>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670819</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 20:20:54 -0700</bug_when>
    <thetext>Tidy up color usage in accessibility code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670820</commentid>
    <comment_count>1</comment_count>
      <attachid>404085</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 20:22:35 -0700</bug_when>
    <thetext>Created attachment 404085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670867</commentid>
    <comment_count>2</comment_count>
      <attachid>404085</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 08:57:13 -0700</bug_when>
    <thetext>Comment on attachment 404085
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1997
&gt; +    SRGBA&lt;uint8_t&gt; result { 0, 0, 0, 0 };

I don’t see why this function benefits from a local variable.

But if we did keep it, is there no &quot;tidier&quot; way to write this? Related: Is there a significant downside to having a structure like SRGBA be initialized by default? I would prefer one of these:

    SRGBA&lt;uint8_t&gt; result = Color::transparentBlack;
    auto result = Color::transparentBlack;
    SRGBA&lt;uint8_t&gt; result = { };
    SRGBA&lt;uint8_t&gt; result { };
    SRGBA&lt;uint8_t&gt; result; // &lt;initialized to transparent black because we change SRGBA to just do that&gt;

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2001
&gt; +        return result;

I propose one of these:

    return Color::transparentBlack;
    return { };

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2004
&gt; +        return result;

Ditto.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2006
&gt; +    result = downcast&lt;HTMLInputElement&gt;(*node()).valueAsColor().toSRGBALossy&lt;uint8_t&gt;();

I propose:

    return downcast ...

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2009
&gt; +    return result;

I propose one of these:

    return Color::transparentBlack;
    return { };

But also changing structure a bit perhaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670872</commentid>
    <comment_count>3</comment_count>
      <attachid>404102</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 09:43:56 -0700</bug_when>
    <thetext>Created attachment 404102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670875</commentid>
    <comment_count>4</comment_count>
      <attachid>404102</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 09:58:39 -0700</bug_when>
    <thetext>Comment on attachment 404102
Patch

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

My comments on the previous patch still apply to this one.

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1425
&gt; +        auto color = self.axBackingObject-&gt;colorValue();

Build failures seems to be because this is missing the call to convertToComponentFloats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670884</commentid>
    <comment_count>5</comment_count>
      <attachid>404106</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 10:56:34 -0700</bug_when>
    <thetext>Created attachment 404106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670885</commentid>
    <comment_count>6</comment_count>
      <attachid>404107</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 11:00:44 -0700</bug_when>
    <thetext>Created attachment 404107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670886</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 11:01:25 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 404085 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404085&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1997
&gt; &gt; +    SRGBA&lt;uint8_t&gt; result { 0, 0, 0, 0 };
&gt; 
&gt; I don’t see why this function benefits from a local variable.
&gt; 
&gt; But if we did keep it, is there no &quot;tidier&quot; way to write this? Related: Is
&gt; there a significant downside to having a structure like SRGBA be initialized
&gt; by default? I would prefer one of these:
&gt; 
&gt;     SRGBA&lt;uint8_t&gt; result = Color::transparentBlack;
&gt;     auto result = Color::transparentBlack;
&gt;     SRGBA&lt;uint8_t&gt; result = { };
&gt;     SRGBA&lt;uint8_t&gt; result { };
&gt;     SRGBA&lt;uint8_t&gt; result; // &lt;initialized to transparent black because we
&gt; change SRGBA to just do that&gt;
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2001
&gt; &gt; +        return result;
&gt; 
&gt; I propose one of these:
&gt; 
&gt;     return Color::transparentBlack;
&gt;     return { };
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2004
&gt; &gt; +        return result;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2006
&gt; &gt; +    result = downcast&lt;HTMLInputElement&gt;(*node()).valueAsColor().toSRGBALossy&lt;uint8_t&gt;();
&gt; 
&gt; I propose:
&gt; 
&gt;     return downcast ...
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:2009
&gt; &gt; +    return result;
&gt; 
&gt; I propose one of these:
&gt; 
&gt;     return Color::transparentBlack;
&gt;     return { };
&gt; 
&gt; But also changing structure a bit perhaps.

Reworked it to remove the local variable and use early returns of Color::transparent;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670888</commentid>
    <comment_count>8</comment_count>
      <attachid>404109</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 11:03:01 -0700</bug_when>
    <thetext>Created attachment 404109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670903</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-12 12:46:04 -0700</bug_when>
    <thetext>Committed r264284: &lt;https://trac.webkit.org/changeset/264284&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404109.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670904</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-12 12:47:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65440513&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404085</attachid>
            <date>2020-07-11 20:22:35 -0700</date>
            <delta_ts>2020-07-12 09:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214226-20200711202234.patch</filename>
            <type>text/plain</type>
            <size>8846</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIGNvbG9yIHVzYWdlIGlu
IGFjY2Vzc2liaWxpdHkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0MjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gcGFzc2luZyBhcm91bmQgciwgZywgYiBjb21wb25lbnRz
IGFzIG91dC1wYXJhbWV0ZXJzLAorICAgICAgICB1c2UgU1JHQkE8dWludDhfdD4gcmV0dXJuIHZh
bHVlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjAtMDctMTEgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb25pYyBncmFkaWVu
dHMgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDI3MikKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTkyLDI0ICsxOTkyLDIxIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6c3RyaW5nVmEKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikg
Y29uc3QKK1NSR0JBPHVpbnQ4X3Q+IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVl
KCkgY29uc3QKIHsKLSAgICByID0gMDsKLSAgICBnID0gMDsKLSAgICBiID0gMDsKKyAgICBTUkdC
QTx1aW50OF90PiByZXN1bHQgeyAwLCAwLCAwLCAwIH07CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICAgICBpZiAoIWlzQ29sb3JXZWxsKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0byBj
b2xvciA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpLnZhbHVlQXNDb2xvcigp
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotICAgIHIgPSBjb2xvci5yZWQ7Ci0gICAgZyA9IGNv
bG9yLmdyZWVuOwotICAgIGIgPSBjb2xvci5ibHVlOworICAgIHJlc3VsdCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpLnZhbHVlQXNDb2xvcigpLnRvU1JHQkFMb3NzeTx1aW50
OF90PigpOwogI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGltcGxlbWVudHMgdGhlIEFSSUEgYWNjZXNzaWJsZSBuYW1lIGFzIGRlc2NyaWJlZCBieSB0
aGUgTW96aWxsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgJKHJldmlzaW9uIDI2NDI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50
JiBiKSBjb25zdCBvdmVycmlkZTsKKyAgICBTUkdCQTx1aW50OF90PiBjb2xvclZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiAyNjQyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gT25seSBpZiBp
c0NvbG9yV2VsbCgpCi0gICAgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIp
IGNvbnN0IG92ZXJyaWRlIHsgciA9IDA7IGcgPSAwOyBiID0gMDsgfQorICAgIFNSR0JBPHVpbnQ4
X3Q+IGNvbG9yVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IDAsIDAsIDAsIDAgfTsg
fQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yb2xlOyB9CiAgICAgU3RyaW5nIHJvbGVQbGF0Zm9ybVN0cmluZygpIGNvbnN0IG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDI2NDI3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAKICAgICAvLyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkK
LSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBTUkdCQTx1aW50OF90PiBjb2xvclZhbHVlKCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgLy8gTm9uLWxvY2FsaXplZCBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3Qg
cm9sZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJKHJldmlzaW9u
IDI2NDI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDkgKzQ0OCw4IEBA
IHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXgKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsKSB7Ci0gICAgICAgIGludCByLCBnLCBiOwotICAgICAg
ICBjb3JlT2JqZWN0LT5jb2xvclZhbHVlKHIsIGcsIGIpOwotICAgICAgICByZXR1cm4gZ19zdHJk
dXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIHIgLyAyNTUuLCBnIC8gMjU1Liwg
YiAvIDI1NS4pOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydFRvQ29tcG9uZW50RmxvYXRz
KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBnX3N0cmR1cF9wcmlu
dGYoInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s
b3IuYmx1ZSk7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNjQyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDEw
ICszNTAsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1CiAgICAg
ICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVuZCgiICIpOwogICAgIH0KICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlzdCk7Ci0gICAgCi0g
ICAgaW50IHIsIGcsIGI7Ci0gICAgb2JqZWN0LmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUsIG1ha2VTaW1wbGVDb2xvcihyLCBn
LCBiKSk7CisKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2Jq
ZWN0LmNvbG9yVmFsdWUoKSk7CiAgICAgCiAgICAgaWYgKGJvb2wgaXNNYXRoRWxlbWVudCA9IG9i
amVjdC5pc01hdGhFbGVtZW50KCkpIHsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aEVsZW1lbnQsIGlzTWF0aEVsZW1lbnQpOwpAQCAtNzA4LDEyICs3MDYsOSBAQCB2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFByZXZlbnRLZXlib2FyCiAgICAgfSk7CiB9CiAKLXZv
aWQgQVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBj
b25zdAorU1JHQkE8dWludDhfdD4gQVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0
CiB7Ci0gICAgYXV0byBjb2xvciA9IGNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OkNvbG9yVmFsdWUpLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotICAgIHIgPSBjb2xvci5yZWQ7
Ci0gICAgZyA9IGNvbG9yLmdyZWVuOwotICAgIGIgPSBjb2xvci5ibHVlOworICAgIHJldHVybiBj
b2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlKS50b1NSR0JBTG9z
c3k8dWludDhfdD4oKTsKIH0KIAogQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjphY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCShyZXZpc2lvbiAyNjQyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhv
bGRlclZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVk
VGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQogICAgIGJvb2wgc3VwcG9ydHNF
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSk7IH0KLSAgICB2
b2lkIGNvbG9yVmFsdWUoaW50JiwgaW50JiwgaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU1JH
QkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlSb2xlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVZh
bHVlKSk7IH0KICAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVQbGF0Zm9y
bVN0cmluZyk7IH0KICAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlw
dGlvbik7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShy
ZXZpc2lvbiAyNjQyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU0Miw5
ICsyNTQyLDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
ICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5pc1NlbGVjdGVkKCkpOwogCiAgICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgpKSB7Ci0gICAgICAgICAgICBpbnQgciwgZywg
YjsKLSAgICAgICAgICAgIGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAg
ICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcu
NWYgJTcuNWYgMSIsIHIgLyAyNTUuLCBnIC8gMjU1LiwgYiAvIDI1NS5dOworICAgICAgICAgICAg
YXV0byBjb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhiYWNraW5nT2JqZWN0LT5jb2xv
clZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCBjb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xv
ci5ibHVlXTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5zdHJp
bmdWYWx1ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404102</attachid>
            <date>2020-07-12 09:43:56 -0700</date>
            <delta_ts>2020-07-12 10:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214226-20200712094355.patch</filename>
            <type>text/plain</type>
            <size>9671</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIGNvbG9yIHVzYWdlIGlu
IGFjY2Vzc2liaWxpdHkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0MjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gcGFzc2luZyBhcm91bmQgciwgZywgYiBjb21wb25lbnRz
IGFzIG91dC1wYXJhbWV0ZXJzLAorICAgICAgICB1c2UgU1JHQkE8dWludDhfdD4gcmV0dXJuIHZh
bHVlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjAtMDctMTEgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb25pYyBncmFkaWVu
dHMgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDI3MykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTkyLDI0ICsxOTkyLDIxIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6c3RyaW5nVmEKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikg
Y29uc3QKK1NSR0JBPHVpbnQ4X3Q+IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVl
KCkgY29uc3QKIHsKLSAgICByID0gMDsKLSAgICBnID0gMDsKLSAgICBiID0gMDsKKyAgICBTUkdC
QTx1aW50OF90PiByZXN1bHQgeyAwLCAwLCAwLCAwIH07CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICAgICBpZiAoIWlzQ29sb3JXZWxsKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0byBj
b2xvciA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpLnZhbHVlQXNDb2xvcigp
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotICAgIHIgPSBjb2xvci5yZWQ7Ci0gICAgZyA9IGNv
bG9yLmdyZWVuOwotICAgIGIgPSBjb2xvci5ibHVlOworICAgIHJlc3VsdCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpLnZhbHVlQXNDb2xvcigpLnRvU1JHQkFMb3NzeTx1aW50
OF90PigpOwogI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGltcGxlbWVudHMgdGhlIEFSSUEgYWNjZXNzaWJsZSBuYW1lIGFzIGRlc2NyaWJlZCBieSB0
aGUgTW96aWxsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgJKHJldmlzaW9uIDI2NDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBTdHJpbmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50
JiBiKSBjb25zdCBvdmVycmlkZTsKKyAgICBTUkdCQTx1aW50OF90PiBjb2xvclZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiAyNjQyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gT25seSBpZiBp
c0NvbG9yV2VsbCgpCi0gICAgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIp
IGNvbnN0IG92ZXJyaWRlIHsgciA9IDA7IGcgPSAwOyBiID0gMDsgfQorICAgIFNSR0JBPHVpbnQ4
X3Q+IGNvbG9yVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IDAsIDAsIDAsIDAgfTsg
fQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yb2xlOyB9CiAgICAgU3RyaW5nIHJvbGVQbGF0Zm9ybVN0cmluZygpIGNvbnN0IG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDI2NDI3MykKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAKICAgICAvLyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkK
LSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBTUkdCQTx1aW50OF90PiBjb2xvclZhbHVlKCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgLy8gTm9uLWxvY2FsaXplZCBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3Qg
cm9sZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJKHJldmlzaW9u
IDI2NDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDkgKzQ0OCw4IEBA
IHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXgKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsKSB7Ci0gICAgICAgIGludCByLCBnLCBiOwotICAgICAg
ICBjb3JlT2JqZWN0LT5jb2xvclZhbHVlKHIsIGcsIGIpOwotICAgICAgICByZXR1cm4gZ19zdHJk
dXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIHIgLyAyNTUuLCBnIC8gMjU1Liwg
YiAvIDI1NS4pOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydFRvQ29tcG9uZW50RmxvYXRz
KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBnX3N0cmR1cF9wcmlu
dGYoInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s
b3IuYmx1ZSk7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyNjQyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyMiw5ICsxNDIyLDggQEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5
Q29sb3JTdHJpbmdWYQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgaWYgKHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgpKSB7Ci0gICAgICAgIGludCByLCBnLCBiOwotICAgICAg
ICBzZWxmLmF4QmFja2luZ09iamVjdC0+Y29sb3JWYWx1ZShyLCBnLCBiKTsKLSAgICAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAicmdiICU3LjVmICU3LjVmICU3LjVmIDEi
LCByIC8gMjU1LiwgZyAvIDI1NS4sIGIgLyAyNTUuXTsKKyAgICAgICAgYXV0byBjb2xvciA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKCk7CisgICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVk
LCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCiAgICAgcmV0dXJuIG5pbDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQyNzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDEwICszNTAsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmluaXRpYWxpemVBdHRyaWJ1CiAgICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVuZCgi
ICIpOwogICAgIH0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBj
b21iaW5lZENsYXNzTGlzdCk7Ci0gICAgCi0gICAgaW50IHIsIGcsIGI7Ci0gICAgb2JqZWN0LmNv
bG9yVmFsdWUociwgZywgYik7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9y
VmFsdWUsIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKSk7CisKKyAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNvbG9yVmFsdWUoKSk7CiAgICAgCiAgICAg
aWYgKGJvb2wgaXNNYXRoRWxlbWVudCA9IG9iamVjdC5pc01hdGhFbGVtZW50KCkpIHsKICAgICAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1lbnQsIGlzTWF0aEVsZW1l
bnQpOwpAQCAtNzA4LDEyICs3MDYsOSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFByZXZl
bnRLZXlib2FyCiAgICAgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1
ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdAorU1JHQkE8dWludDhfdD4gQVhJc29sYXRl
ZE9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgYXV0byBjb2xvciA9IGNvbG9yQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUpLnRvU1JHQkFMb3NzeTx1aW50
OF90PigpOwotICAgIHIgPSBjb2xvci5yZWQ7Ci0gICAgZyA9IGNvbG9yLmdyZWVuOwotICAgIGIg
PSBjb2xvci5ibHVlOworICAgIHJldHVybiBjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpDb2xvclZhbHVlKS50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKIH0KIAogQVhDb3JlT2Jq
ZWN0KiBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCShyZXZpc2lvbiAy
NjQyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFs
dWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZh
bHVlKTsgfQogICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNF
eHBhbmRlZFRleHRWYWx1ZSk7IH0KLSAgICB2b2lkIGNvbG9yVmFsdWUoaW50JiwgaW50JiwgaW50
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU1JHQkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSb2xlPihpbnRBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVZhbHVlKSk7IH0KICAgICBTdHJpbmcgcm9sZVBsYXRm
b3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OlJvbGVQbGF0Zm9ybVN0cmluZyk7IH0KICAgICBTdHJpbmcgcm9sZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbik7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyNjQyNzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjU0Miw5ICsyNTQyLDggQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5p
c1NlbGVjdGVkKCkpOwogCiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgp
KSB7Ci0gICAgICAgICAgICBpbnQgciwgZywgYjsKLSAgICAgICAgICAgIGJhY2tpbmdPYmplY3Qt
PmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIHIgLyAyNTUuLCBnIC8gMjU1
LiwgYiAvIDI1NS5dOworICAgICAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVu
dEZsb2F0cyhiYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCBj
b2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlXTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBiYWNraW5nT2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404106</attachid>
            <date>2020-07-12 10:56:34 -0700</date>
            <delta_ts>2020-07-12 11:00:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214226-20200712105633.patch</filename>
            <type>text/plain</type>
            <size>9689</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIGNvbG9yIHVzYWdlIGlu
IGFjY2Vzc2liaWxpdHkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0MjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gcGFzc2luZyBhcm91bmQgciwgZywgYiBjb21wb25lbnRz
IGFzIG91dC1wYXJhbWV0ZXJzLAorICAgICAgICB1c2UgU1JHQkE8dWludDhfdD4gcmV0dXJuIHZh
bHVlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjAtMDctMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGRlYmlhbiBidWls
ZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk5MiwyNCArMTk5MiwyMSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnN0cmluZ1ZhCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0CitT
UkdCQTx1aW50OF90PiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0
CiB7Ci0gICAgciA9IDA7Ci0gICAgZyA9IDA7Ci0gICAgYiA9IDA7CisgICAgU1JHQkE8dWludDhf
dD4gcmVzdWx0IHsgMCwgMCwgMCwgMCB9OwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CiAgICAgaWYgKCFpc0NvbG9yV2VsbCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gY29sb3IgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKS52YWx1ZUFzQ29sb3IoKS50b1NSR0JB
TG9zc3k8dWludDhfdD4oKTsKLSAgICByID0gY29sb3IucmVkOwotICAgIGcgPSBjb2xvci5ncmVl
bjsKLSAgICBiID0gY29sb3IuYmx1ZTsKKyAgICByZXN1bHQgPSBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50Pigqbm9kZSgpKS52YWx1ZUFzQ29sb3IoKS50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsK
ICNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpbXBs
ZW1lbnRzIHRoZSBBUklBIGFjY2Vzc2libGUgbmFtZSBhcyBkZXNjcmliZWQgYnkgdGhlIE1vemls
bGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5oCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IHRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU1JHQkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2
aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE9ubHkgaWYgaXNDb2xvcldl
bGwoKQotICAgIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdCBv
dmVycmlkZSB7IHIgPSAwOyBnID0gMDsgYiA9IDA7IH0KKyAgICBTUkdCQTx1aW50OF90PiBjb2xv
clZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyAwLCAwLCAwLCAwIH07IH0KIAogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cm9sZTsgfQogICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODQwLDcgKzg0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3QgPSAwOwogCiAgICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCi0gICAgdmly
dHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU1JHQkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIC8v
IE5vbi1sb2NhbGl6ZWQgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgb2JqZWN0IHJvbGUuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyNjQyNzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw5ICs0NDgsOCBAQCBzdGF0aWMg
Z2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbG9yV2VsbCkgewotICAgICAgICBpbnQgciwgZywgYjsKLSAgICAgICAgY29yZU9i
amVjdC0+Y29sb3JWYWx1ZShyLCBnLCBiKTsKLSAgICAgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50
ZigicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCByIC8gMjU1LiwgZyAvIDI1NS4sIGIgLyAyNTUu
KTsKKyAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb3JlT2Jq
ZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2Ig
JTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUp
OwogICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0MjIsOSArMTQyMiw4IEBAIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eUNvbG9yU3Ry
aW5nVmEKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVj
dC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICBpbnQgciwgZywgYjsKLSAgICAgICAgc2VsZi5h
eEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgciAvIDI1
NS4sIGcgLyAyNTUuLCBiIC8gMjU1Ll07CisgICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9D
b21wb25lbnRGbG9hdHMoc2VsZi5heEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAl
Ny41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCiAg
ICAgcmV0dXJuIG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCShyZXZpc2lv
biAyNjQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDEwICszNTAsOCBAQCB2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1CiAgICAgICAgIGNvbWJpbmVk
Q2xhc3NMaXN0LmFwcGVuZCgiICIpOwogICAgIH0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlzdCk7Ci0gICAgCi0gICAgaW50IHIsIGcs
IGI7Ci0gICAgb2JqZWN0LmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUsIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKSk7CisKKyAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNvbG9yVmFs
dWUoKSk7CiAgICAgCiAgICAgaWYgKGJvb2wgaXNNYXRoRWxlbWVudCA9IG9iamVjdC5pc01hdGhF
bGVtZW50KCkpIHsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVs
ZW1lbnQsIGlzTWF0aEVsZW1lbnQpOwpAQCAtNzA4LDEyICs3MDYsOSBAQCB2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OnNldFByZXZlbnRLZXlib2FyCiAgICAgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6Y29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdAorU1JHQkE8
dWludDhfdD4gQVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgYXV0
byBjb2xvciA9IGNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUp
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotICAgIHIgPSBjb2xvci5yZWQ7Ci0gICAgZyA9IGNv
bG9yLmdyZWVuOwotICAgIGIgPSBjb2xvci5ibHVlOworICAgIHJldHVybiBjb2xvckF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlKS50b1NSR0JBTG9zc3k8dWludDhfdD4o
KTsKIH0KIAogQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw3
ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQogICAgIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6U3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSk7IH0KLSAgICB2b2lkIGNvbG9yVmFs
dWUoaW50JiwgaW50JiwgaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU1JHQkE8dWludDhfdD4g
Y29sb3JWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlS
b2xlPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um9sZVZhbHVlKSk7IH0KICAg
ICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVQbGF0Zm9ybVN0cmluZyk7IH0K
ICAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbik7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyNjQy
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU0Miw5ICsyNTQyLDggQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm4g
QChiYWNraW5nT2JqZWN0LT5pc1NlbGVjdGVkKCkpOwogCiAgICAgICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc0NvbG9yV2VsbCgpKSB7Ci0gICAgICAgICAgICBpbnQgciwgZywgYjsKLSAgICAgICAg
ICAgIGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgICAgICAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIs
IHIgLyAyNTUuLCBnIC8gMjU1LiwgYiAvIDI1NS5dOworICAgICAgICAgICAgYXV0byBjb2xvciA9
IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhiYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAicmdiICU3LjVm
ICU3LjVmICU3LjVmIDEiLCBjb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlXTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404107</attachid>
            <date>2020-07-12 11:00:44 -0700</date>
            <delta_ts>2020-07-12 11:03:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214226-20200712110043.patch</filename>
            <type>text/plain</type>
            <size>9594</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIGNvbG9yIHVzYWdlIGlu
IGFjY2Vzc2liaWxpdHkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0MjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gcGFzc2luZyBhcm91bmQgciwgZywgYiBjb21wb25lbnRz
IGFzIG91dC1wYXJhbWV0ZXJzLAorICAgICAgICB1c2UgU1JHQkE8dWludDhfdD4gcmV0dXJuIHZh
bHVlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjAtMDctMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGRlYmlhbiBidWls
ZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk5MiwyMyArMTk5MiwxOCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnN0cmluZ1ZhCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0CitT
UkdCQTx1aW50OF90PiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0
CiB7Ci0gICAgciA9IDA7Ci0gICAgZyA9IDA7Ci0gICAgYiA9IDA7Ci0KLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKyNpZiAhRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgcmV0dXJu
IENvbG9yOjp0cmFuc3BhcmVudDsKKyNlbHNlCiAgICAgaWYgKCFpc0NvbG9yV2VsbCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIGF1dG8gY29sb3IgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKS52YWx1ZUFzQ29sb3IoKS50b1NSR0JBTG9zc3k8
dWludDhfdD4oKTsKLSAgICByID0gY29sb3IucmVkOwotICAgIGcgPSBjb2xvci5ncmVlbjsKLSAg
ICBiID0gY29sb3IuYmx1ZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUoKSkudmFsdWVBc0NvbG9yKCkudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAjZW5kaWYK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb2xvclZhbHVlKGludCYgciwg
aW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlOworICAgIFNSR0JBPHVpbnQ4X3Q+IGNvbG9y
VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5j
bHVzaW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDMsNyAr
NDAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxF
bGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAv
LyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkKLSAgICB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQm
IGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGUgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAg
U1JHQkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgMCwg
MCwgMCwgMCB9OyB9CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3JvbGU7IH0KICAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAkocmV2aXNpb24g
MjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0MCw3ICs4NDAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKIAogICAgIC8vIE9ubHkgaWYgaXND
b2xvcldlbGwoKQotICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBp
bnQmIGIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNSR0JBPHVpbnQ4X3Q+IGNvbG9yVmFsdWUo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0ID0gMDsKICAgICAvLyBOb24tbG9jYWxpemVkIHN0cmluZyBhc3NvY2lhdGVkIHdpdGgg
dGhlIG9iamVjdCByb2xlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cAkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDgs
OSArNDQ4LDggQEAgc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGwpIHsKLSAgICAgICAgaW50IHIsIGcs
IGI7Ci0gICAgICAgIGNvcmVPYmplY3QtPmNvbG9yVmFsdWUociwgZywgYik7Ci0gICAgICAgIHJl
dHVybiBnX3N0cmR1cF9wcmludGYoInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgciAvIDI1NS4s
IGcgLyAyNTUuLCBiIC8gMjU1Lik7CisgICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9Db21w
b25lbnRGbG9hdHMoY29yZU9iamVjdC0+Y29sb3JWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGdf
c3RyZHVwX3ByaW50ZigicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCBjb2xvci5yZWQsIGNvbG9y
LmdyZWVuLCBjb2xvci5ibHVlKTsKICAgICB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIyLDkgKzE0MjIsOCBAQCAtIChOU1N0cmluZyAqKWFj
Y2Vzc2liaWxpdHlDb2xvclN0cmluZ1ZhCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAo
c2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAgICAgaW50IHIsIGcs
IGI7Ci0gICAgICAgIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKHIsIGcsIGIpOwot
ICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcu
NWYgJTcuNWYgMSIsIHIgLyAyNTUuLCBnIC8gMjU1LiwgYiAvIDI1NS5dOworICAgICAgICBhdXRv
IGNvbG9yID0gY29udmVydFRvQ29tcG9uZW50RmxvYXRzKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5j
b2xvclZhbHVlKCkpOworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9y
LmJsdWVdOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcAkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1MCwxMCArMzUwLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmli
dQogICAgICAgICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoIiAiKTsKICAgICB9CiAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNsYXNzTGlzdCwgY29tYmluZWRDbGFzc0xpc3QpOwot
ICAgIAotICAgIGludCByLCBnLCBiOwotICAgIG9iamVjdC5jb2xvclZhbHVlKHIsIGcsIGIpOwot
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlLCBtYWtlU2ltcGxlQ29s
b3IociwgZywgYikpOworCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFs
dWUsIG9iamVjdC5jb2xvclZhbHVlKCkpOwogICAgIAogICAgIGlmIChib29sIGlzTWF0aEVsZW1l
bnQgPSBvYmplY3QuaXNNYXRoRWxlbWVudCgpKSB7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc01hdGhFbGVtZW50LCBpc01hdGhFbGVtZW50KTsKQEAgLTcwOCwxMiArNzA2
LDkgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcmV2ZW50S2V5Ym9hcgogICAgIH0pOwog
fQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGlu
dCYgYikgY29uc3QKK1NSR0JBPHVpbnQ4X3Q+IEFYSXNvbGF0ZWRPYmplY3Q6OmNvbG9yVmFsdWUo
KSBjb25zdAogewotICAgIGF1dG8gY29sb3IgPSBjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpDb2xvclZhbHVlKS50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKLSAgICByID0gY29s
b3IucmVkOwotICAgIGcgPSBjb2xvci5ncmVlbjsKLSAgICBiID0gY29sb3IuYmx1ZTsKKyAgICBy
ZXR1cm4gY29sb3JBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSkudG9T
UkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiB9CiAKIEFYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVj
dDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDEsNyArNTQxLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcg
cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQbGFjZWhvbGRlclZhbHVlKTsgfQogICAgIFN0cmluZyBl
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSk7IH0KICAgICBib29sIHN1
cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUpOyB9
Ci0gICAgdm9pZCBjb2xvclZhbHVlKGludCYsIGludCYsIGludCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFNSR0JBPHVpbnQ4X3Q+IGNvbG9yVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5Um9sZT4oaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlJvbGVWYWx1ZSkpOyB9CiAgICAgU3RyaW5nIHJvbGVQbGF0Zm9ybVN0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpSb2xl
UGxhdGZvcm1TdHJpbmcpOyB9CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpSb2xl
RGVzY3JpcHRpb24pOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1NDIsOSArMjU0Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsKIAogICAg
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICAgICAgaW50
IHIsIGcsIGI7Ci0gICAgICAgICAgICBiYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKHIsIGcsIGIp
OwotICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAicmdiICU3
LjVmICU3LjVmICU3LjVmIDEiLCByIC8gMjU1LiwgZyAvIDI1NS4sIGIgLyAyNTUuXTsKKyAgICAg
ICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9Db21wb25lbnRGbG9hdHMoYmFja2luZ09iamVj
dC0+Y29sb3JWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVl
biwgY29sb3IuYmx1ZV07CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYmFja2luZ09iamVj
dC0+c3RyaW5nVmFsdWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404109</attachid>
            <date>2020-07-12 11:03:01 -0700</date>
            <delta_ts>2020-07-12 12:46:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214226-20200712110301.patch</filename>
            <type>text/plain</type>
            <size>9598</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIGNvbG9yIHVzYWdlIGlu
IGFjY2Vzc2liaWxpdHkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0MjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gcGFzc2luZyBhcm91bmQgciwgZywgYiBjb21wb25lbnRz
IGFzIG91dC1wYXJhbWV0ZXJzLAorICAgICAgICB1c2UgU1JHQkE8dWludDhfdD4gcmV0dXJuIHZh
bHVlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbG9yVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29sb3JWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjAtMDctMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGRlYmlhbiBidWls
ZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk5MiwyMyArMTk5MiwxOCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnN0cmluZ1ZhCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0CitT
UkdCQTx1aW50OF90PiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29sb3JWYWx1ZSgpIGNvbnN0
CiB7Ci0gICAgciA9IDA7Ci0gICAgZyA9IDA7Ci0gICAgYiA9IDA7Ci0KLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKyNpZiAhRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgcmV0dXJu
IENvbG9yOjp0cmFuc3BhcmVudDsKKyNlbHNlCiAgICAgaWYgKCFpc0NvbG9yV2VsbCgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIGF1dG8gY29sb3IgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKS52YWx1ZUFzQ29sb3IoKS50b1NSR0JBTG9zc3k8
dWludDhfdD4oKTsKLSAgICByID0gY29sb3IucmVkOwotICAgIGcgPSBjb2xvci5ncmVlbjsKLSAg
ICBiID0gY29sb3IuYmx1ZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUoKSkudmFsdWVBc0NvbG9yKCkudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAjZW5kaWYK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkocmV2aXNpb24gMjY0Mjc5KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb2xvclZhbHVlKGludCYgciwg
aW50JiBnLCBpbnQmIGIpIGNvbnN0IG92ZXJyaWRlOworICAgIFNSR0JBPHVpbnQ4X3Q+IGNvbG9y
VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5j
bHVzaW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDMsNyAr
NDAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxF
bGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAv
LyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkKLSAgICB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQm
IGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGUgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CisgICAg
U1JHQkE8dWludDhfdD4gY29sb3JWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbG9y
Ojp0cmFuc3BhcmVudDsgfQogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yb2xlOyB9CiAgICAgU3RyaW5nIHJvbGVQbGF0Zm9ybVN0
cmluZygpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgJKHJldmlz
aW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNyArODQwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1l
bnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAKICAgICAvLyBPbmx5IGlm
IGlzQ29sb3JXZWxsKCkKLSAgICB2aXJ0dWFsIHZvaWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYg
ZywgaW50JiBiKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTUkdCQTx1aW50OF90PiBjb2xvclZh
bHVlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCA9IDA7CiAgICAgLy8gTm9uLWxvY2FsaXplZCBzdHJpbmcgYXNzb2NpYXRlZCB3
aXRoIHRoZSBvYmplY3Qgcm9sZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQ4LDkgKzQ0OCw4IEBAIHN0YXRpYyBnY2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXgK
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsKSB7Ci0gICAgICAgIGludCBy
LCBnLCBiOwotICAgICAgICBjb3JlT2JqZWN0LT5jb2xvclZhbHVlKHIsIGcsIGIpOwotICAgICAg
ICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIHIgLyAy
NTUuLCBnIC8gMjU1LiwgYiAvIDI1NS4pOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydFRv
Q29tcG9uZW50RmxvYXRzKGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIHJldHVy
biBnX3N0cmR1cF9wcmludGYoInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBj
b2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyNjQyNzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQyMiw5ICsxNDIyLDggQEAgLSAoTlNTdHJpbmcg
KilhY2Nlc3NpYmlsaXR5Q29sb3JTdHJpbmdWYQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
aWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgpKSB7Ci0gICAgICAgIGludCBy
LCBnLCBiOwotICAgICAgICBzZWxmLmF4QmFja2luZ09iamVjdC0+Y29sb3JWYWx1ZShyLCBnLCBi
KTsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAicmdiICU3LjVm
ICU3LjVmICU3LjVmIDEiLCByIC8gMjU1LiwgZyAvIDI1NS4sIGIgLyAyNTUuXTsKKyAgICAgICAg
YXV0byBjb2xvciA9IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhzZWxmLmF4QmFja2luZ09iamVj
dC0+Y29sb3JWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCBjb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBj
b2xvci5ibHVlXTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTAsMTAgKzM1MCw4IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0
dHJpYnUKICAgICAgICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5kKCIgIik7CiAgICAgfQogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDbGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0
KTsKLSAgICAKLSAgICBpbnQgciwgZywgYjsKLSAgICBvYmplY3QuY29sb3JWYWx1ZShyLCBnLCBi
KTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgbWFrZVNpbXBs
ZUNvbG9yKHIsIGcsIGIpKTsKKworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2xv
clZhbHVlLCBvYmplY3QuY29sb3JWYWx1ZSgpKTsKICAgICAKICAgICBpZiAoYm9vbCBpc01hdGhF
bGVtZW50ID0gb2JqZWN0LmlzTWF0aEVsZW1lbnQoKSkgewogICAgICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNNYXRoRWxlbWVudCwgaXNNYXRoRWxlbWVudCk7CkBAIC03MDgsMTIg
KzcwNiw5IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJldmVudEtleWJvYXIKICAgICB9
KTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBn
LCBpbnQmIGIpIGNvbnN0CitTUkdCQTx1aW50OF90PiBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvclZh
bHVlKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbG9yID0gY29sb3JBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSkudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7Ci0gICAgciA9
IGNvbG9yLnJlZDsKLSAgICBnID0gY29sb3IuZ3JlZW47Ci0gICAgYiA9IGNvbG9yLmJsdWU7Cisg
ICAgcmV0dXJuIGNvbG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUp
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwogfQogCiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgJKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQxLDcgKzU0MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3Ry
aW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJp
bmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CiAgICAgYm9v
bCBzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVl
KTsgfQotICAgIHZvaWQgY29sb3JWYWx1ZShpbnQmLCBpbnQmLCBpbnQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTUkdCQTx1aW50OF90PiBjb2xvclZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpSb2xlVmFsdWUpKTsgfQogICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
Um9sZVBsYXRmb3JtU3RyaW5nKTsgfQogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
Um9sZURlc2NyaXB0aW9uKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0JKHJldmlzaW9uIDI2NDI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTQyLDkgKzI1NDIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzU2VsZWN0ZWQoKSk7CiAK
ICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAgICAgICAg
IGludCByLCBnLCBiOwotICAgICAgICAgICAgYmFja2luZ09iamVjdC0+Y29sb3JWYWx1ZShyLCBn
LCBiKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJn
YiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgciAvIDI1NS4sIGcgLyAyNTUuLCBiIC8gMjU1Ll07Cisg
ICAgICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydFRvQ29tcG9uZW50RmxvYXRzKGJhY2tpbmdP
YmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNvbG9yLnJlZCwgY29sb3Iu
Z3JlZW4sIGNvbG9yLmJsdWVdOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGJhY2tpbmdP
YmplY3QtPnN0cmluZ1ZhbHVlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>